Joo*_*ann 12 iphone cocoa-touch objective-c uikit ios
基本上我是从网络服务器下载图像,然后将它们缓存到磁盘,但在我这样做之前,我想掩盖它们.我正在使用每个人似乎都指出的屏蔽代码,可以在这里找到:http: //iosdevelopertips.com/cocoa/how-to-mask-an-image.html
但是会发生什么,图像显示正常,但是用于写入磁盘的版本
UIImage *img = [self maskImage:[UIImage imageWithData:data] withMask:self.imageMask];
[UIImagePNGRepresentation(img) writeToFile:cachePath atomically:NO];
Run Code Online (Sandbox Code Playgroud)
与后面显示的相比,它的alpha通道被反转(在这里使用相同的UIImage实例).
有任何想法吗?我确实需要屏蔽缓存版本,否则如果我每次必须屏蔽它们,那么在表格视图中显示图像会非常慢.
编辑:所以是的,UIImagePNGRepresentation(img)似乎反转了alpha通道,与写入磁盘的代码没有任何关系,这是相当明显的,但无论如何我都检查过.
epa*_*tel 14
如何绘制到新图像,然后保存?
UIGraphicsBeginImageContext(img.size);
[img drawAtPoint:CGPointZero];
UIImage *newImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[UIImagePNGRepresentation(newImg) writeToFile:cachePath atomically:NO];
Run Code Online (Sandbox Code Playgroud)
(另)
看到在描述CGImageCreateWithMask中CGImage参考:
生成的图像取决于掩码参数是图像掩码还是图像.如果掩码参数是图像掩码,则图像掩码的源样本充当反α值.也就是说,如果图像掩模中的源样本的值是S,则使用α值(1-S)将图像中的对应区域与目的地混合.例如,如果S为1,则不绘制区域,而如果S为0,则区域完全绘制.
如果蒙版参数是图像,则它用作用于将图像混合到目标上的阿尔法蒙版.掩码的源样本'充当alpha值.如果掩码中源样本的值为S,则图像中的对应区域与目标字符串混合,其中字母为S.例如,如果S为0,则该区域不会绘制,而如果S为1,该地区是完全涂漆的.
由于某种原因,图像蒙mask image版在保存时被视为遮罩.根据:
要正确保存UIImagePNGRepresentation,有几种选择:
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |