代码之家  ›  专栏  ›  技术社区  ›  Joonas Trussmann

将掩码图像作为PNG文件写入磁盘

  •  12
  • Joonas Trussmann  · 技术社区  · 16 年前

    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];
    

    有什么想法吗?我确实需要屏蔽缓存版本,否则在表视图中显示图像会变得非常慢。如果每次都要屏蔽它们,速度会非常慢。

    编辑:是的,UIImagePNGResentation(img)似乎反转了alpha通道,与写入磁盘的代码无关,这很明显,但我还是检查了。

    3 回复  |  直到 9 年前
        1
  •  14
  •   epatel    14 年前

    UIGraphicsBeginImageContext(img.size);
    [img drawAtPoint:CGPointZero];
    UIImage *newImg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [UIImagePNGRepresentation(newImg) writeToFile:cachePath atomically:NO];
    

    (未经测试)

        2
  •  5
  •   Community Mohan Dere    6 年前

    请参阅中的说明 CGImageCreateWithMask 在 CGImage Reference :

    得到的图像取决于掩模参数是图像掩模还是图像。 如果掩码参数是图像掩码,则图像掩码的源样本充当逆阿尔法值。

    似乎出于某种原因,图像蒙版被视为 mask image 在储蓄时戴上口罩。根据:

    正确保存 UIImagePNGRepresentation

    1. 使用图像蒙版的反转版本。
    2. 使用“遮罩图像”而不是“图像遮罩”。