如何将图像保存到 iPhone 中的照片而不损失质量?

Posted

技术标签:

【中文标题】如何将图像保存到 iPhone 中的照片而不损失质量?【英文标题】:how to save Image to Photos in iPhone without losing quality? 【发布时间】:2010-03-08 23:02:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您需要将图像包装在 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 格式保存在照片库中,以便以后可以以完整质量访问/共享。

【讨论】:

【参考方案2】:

函数

NSData * UIImageJPEGRepresentation ( UIImage *image, CGFloat compressionQuality );

使您能够获取图像的数据表示以获得预期的压缩质量(1 是最好的)。

然后您只需将 NSData 写入文件系统即可获取 JPEG 文件(例如,在 NSData 上使用 writeToURL:atomically:)。

UIImagePNGRepresentation 也可以应用于 .PNG。

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

【讨论】:

NSData* imageData = UIImagePNGRepresentation(img1);我通过 NSData 得到我的照片。如何保存在照片中?【参考方案3】:

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

【讨论】:

【参考方案4】:

使用时:

UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);

压缩质量约为0.75

image?.jpegData(compressionQuality: 0.75)

自己试试看。 ?

【讨论】:

以上是关于如何将图像保存到 iPhone 中的照片而不损失质量?的主要内容,如果未能解决你的问题,请参考以下文章

将表示图像的 NSMutableData 保存到 iPhone 照片库

如何将图像从相机保存到 iPhone 画廊中的特定文件夹?

如何仅获取保存在iphone应用程序文档文件夹中的所有照片名称

仅当它们由相机拍摄而不是从照片库中选择时才将图像保存到照片库

将自定义图像(非 JPEG)保存到 iPhone 照片目录

将相机捕获的图像保存到ios中的文档目录中[重复]