【发布时间】:2010-03-08 23:02:33
【问题描述】:
当我使用这种方法时,保存的图像质量会下降......
UIImage *img=imageview1.image;
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
【问题讨论】:
标签: iphone cocoa-touch image
当我使用这种方法时,保存的图像质量会下降......
UIImage *img=imageview1.image;
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
【问题讨论】:
标签: iphone cocoa-touch image
您需要将图像包装在 PNG 表示中,以便以 PNG 格式而不是 JPG 格式将其保存到照片库中。
我使用以下代码基于 Ben Weiss 的代码:UIImageWriteToSavedPhotosAlbum saves to wrong size and quality 进行并排比较。
// Image contains a non-compressed image stored within my Documents directory
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSData* imdata = UIImagePNGRepresentation ( image );
UIImage* im2 = [UIImage imageWithData:imdata];
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil);
图像将以 PNG 格式保存在照片库中,以便以后可以以完整质量访问/共享。
【讨论】:
函数
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
使您能够获取图像的数据表示以获得预期的压缩质量(1 是最好的)。
然后您只需将 NSData 写入文件系统即可获取 JPEG 文件(例如,在 NSData 上使用 writeToURL:atomically:)。
UIImagePNGRepresentation 也可以应用于 .PNG。
【讨论】:
我不知道如何在 SDK 中执行此操作,但通过 UI,如果您将图像复制 + 粘贴到消息中,它会保持其完整大小。也许 SDK 中有类似的机制(复制到剪贴板)?不知道。希望它能给你一个想法。
【讨论】:
使用时:
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
压缩质量约为0.75
image?.jpegData(compressionQuality: 0.75)
自己试试看。 ?
【讨论】: