在上传时从iPhone下载图像

时间:2009-08-08 20:57:15

标签: iphone

我有一个申请, 其中

用户从iPhone中选择图像,用于照片字段,

图像上传到服务器

图像大小可以是1 kb,或10 kb,也可以是1 mb或10 mb。

如果图像大小超过5mb,则在存储到服务器之前,图像必须缩小到5mb。问题是如何?是否可能?

我使用以下代码下载图像 - 用于在加载时压缩图像,
imageDatafromPhoto = UIImageJPEGRepresentation([info objectForKey:@“UIImagePickerControllerOriginalImage”],0.2);

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

'压缩'和'重采样'之间存在差异。压缩是使文档变小的无损方式,例如GZip。尽管Objective-C中没有任何标准接口可以帮助您实现此目的,但NSData有一些扩展可用作添加GZip压缩的类别。

但是,这本身对你没有帮助。 JPEG图像往往不能很好地压缩,所以你真正想要的是重新采样或调整图像本身。这会抛出一些数据,使其更小但质量也更差。这是最后0.2的目的 - 0.0是你可以从库中获得的最大压缩。您可以尝试使用连续的小数字(例如,在for循环中)调用它,直到您获得质量可接受的图像大小。

如果失败了,你必须通过将具有指定大小的CGContextDrawImage绘制到CG缓冲区(来自CGBitmapContextCreate)来进行调整大小,然后从那里绘制的结果中获取新图像,然后重新开始。 / p>