当我使用这种方法时,保存的图像质量会丢失......
UIImage *img=imageview1.image;
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
答案 0 :(得分:6)
您需要将图像包装在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格式保存,以便以后可以全部质量访问/共享。
答案 1 :(得分:3)
功能
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
使您能够获得图像的数据表示以获得预期的压缩质量(1是最佳的)。
然后您只需将NSData写入文件系统即可获取JPEG文件(例如,使用writeToURL:atomically:
上的NSData
)。
同样适用于。UIImagePNGRepresentation
。
答案 2 :(得分:1)
我不知道如何在SDK中执行此操作,但通过UI,如果您将图像复制+粘贴到邮件中,则会保留其完整大小。也许SDK中存在类似的机制(复制到剪贴板)?不知道。希望它能给你一个想法。
答案 3 :(得分:0)
使用时:
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
压缩质量约为0.75
image?.jpegData(compressionQuality: 0.75)
请自己尝试以证明。 ?