保留加载的 UIImages 的 alpha 问题 - 如何避免在导入时丢弃 alpha 值?

Posted

技术标签:

【中文标题】保留加载的 UIImages 的 alpha 问题 - 如何避免在导入时丢弃 alpha 值?【英文标题】:Preserving alpha issues with loaded UIImages - how to avoid discarding alpha values on import? 【发布时间】:2010-05-06 23:01:35 【问题描述】:

我的应用程序允许用户将带有 alpha 值的图像保存/加载到设备上的相机胶卷中。我可以在照片应用程序中看到这些图像是适当的 alpha'd,因为 alpha'd 区域只是显示为黑色。但是,当我使用来自(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)infoinfo 字典中的valueForKey:UIImagePickerControllerOriginalImage 消息将这些图像加载回应用程序时,alpha 值将变为白色,使这些部分变得不透明。有没有办法保留这些 alpha 值?

【问题讨论】:

【参考方案1】:

发现了!这是我这样做的功能。您的里程可能会有所不同!:

- (UIImage*)processImage:(UIImage*)image

    CGImageRef reference = image.CGImage;
    float colors[6] = 0xEE, 0xFF, 0xEE, 0xFF, 0xEE, 0xFF;
    CGImageRef newimage = CGImageCreateWithMaskingColors(reference, colors);
    UIImage *result = [[UIImage alloc] initWithCGImage:newimage];
    CGImageRelease(newimage);
    return result;

【讨论】:

非常感谢!这正是我想要的。【参考方案2】:

您应该使用 ALAssetsLibrary 访问原始图像,如下所述: http://www.proace.com/2011/05/27/loading-png-images-using-uiimagepickercontroller-causes-them-to-lose-transparency-and-what-to-do-about-it/

【讨论】:

以上是关于保留加载的 UIImages 的 alpha 问题 - 如何避免在导入时丢弃 alpha 值?的主要内容,如果未能解决你的问题,请参考以下文章

我需要创建一个UIImages数组,我从Swift中的Camera roll加载

如何在运行时正确压缩 UIImages

在 UITableViewCell 中使用 UIImages 的最佳实践

iPhone 应用程序内存泄漏与 NSMutableArray 中的 UIImages

从文件加载的 UIImage 部分是黑色的

如何使用“imageWithData”保存和检索UIImages保持正确的图像格式?