我正在编写一个从Web服务器下载常规PNG文件并将其保存到iPhone相册的功能。我没有收到下面列出的代码的任何错误,但UIImagePNGRepresentation根本不执行转换。我得到的所有图像都是黑色的。我必须在照片下启用“自动增强”才能正确显示这些图像。有什么线索我的代码有什么问题吗?提前谢谢。
UIImage *orgImg = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://server.com/test.png"]]];
NSData * convertedData = UIImagePNGRepresentation(orgImg);
UIImage * img = [UIImage imageWithData: convertedData];
// Save Image to Photo Album
UIImageWriteToSavedPhotosAlbum(img, self,
@selector(thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:), nil);
这两个输出图像的更多细节,orgImg和img:
如果我直接将orgImg传递给UIImageWriteToSavedPhotosAlbum,我确实获得了服务器上托管的相同PNG图像。但是我的iPhone上的照片应用程序将其显示为黑色图像,因为照片不会自动增强PNG格式。
对于使用UIImagePNGRepresentation后获得的img,图像数据已被该方法更改,一些元数据(如宽度/高度)已从原始图像中删除。但是我的iPhone上的照片应用程序仍将其显示为全黑图像。
如果将图像复制到Safari或电子邮件中,则两个图像都会正确显示。如果我在服务器端使用JPEG,我没有遇到任何问题。只是好奇为什么只有PNG格式不起作用。