如何在不降低质量的情况下将图像保存到iPhone中的照片?

时间:2010-03-08 23:02:34

标签: iphone cocoa-touch image

当我使用这种方法时,保存的图像质量会丢失......

UIImage *img=imageview1.image;
UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);

4 个答案:

答案 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

.PNG

原始文件: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UIImageJPEGRepresentation

答案 2 :(得分:1)

我不知道如何在SDK中执行此操作,但通过UI,如果您将图像复制+粘贴到邮件中,则会保留其完整大小。也许SDK中存在类似的机制(复制到剪贴板)?不知道。希望它能给你一个想法。

答案 3 :(得分:0)

使用时:

UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);

压缩质量约为0.75

image?.jpegData(compressionQuality: 0.75)

请自己尝试以证明。 ?