图片下载链接:https://tbgw.alicdn.com/tps/TB1ZKLuQFXXXXbJXXXXXXXXXXXX-264-57.png_.heic
在ios中使用此图片时,Alpha通道不正确。
我的代码
NSString *urlString = @"https://tbgw.alicdn.com/tps/TB1ZKLuQFXXXXbJXXXXXXXXXXXX-264-57.png_.heic";
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = image;
imageView.frame = CGRectMake(10, 100, 390, 100);
[self.view addSubview:imageView];
答案 0 :(得分:0)
我遇到了完全相同的问题。看起来如果图像以预乘 alpha 模式保存,它将以直接 alpha 模式加载。被 UIImageView 渲染后,alpha 通道会被破坏。解决方法是重新加载图像,如果它是 heif:
var fixedImage = image
// Reload image if it is heif
if let utType = image.cgImage?.utType as String?, utType == "public.heic" {
if let data = image.pngData() {
if let reloaded = UIImage(data: data) {
fixedImage = reloaded
}
}
}
imageView.image = fixedImage
即使您通过将其编码为无损 heif(通过将质量设置为 1.0)重新加载,它也能正常工作。
这绝对是一个iOS错误。即使您提交错误报告,我也不认为它会被修复。不过你可以试试看会发生什么。