将高分辨率图像保存到相册

时间:2010-10-15 15:33:45

标签: iphone image image-processing uiimage

我正在开发一个简单的图像处理应用程序,我在我的测试设备(iPhone 3G)上遇到了一个问题,通常任何超过1024x1024像素的图像都会导致应用程序在保存时崩溃。

我的应用程序遵循的过程:

  1. 用户通过UIImagePicker选择图像

  2. 创建所选图像的工作副本并将其调整大小到视图边界(例如320x480)以获得性能。

  3. 用户对工作副本进行图像处理,然后按保存

  4. 对原始全分辨率图像进行相同的处理,然后保存到相册中。

  5. 如果图像是1024x1024的区域,一切都很好,如果太大则应用程序崩溃没有任何内存警告。

  6. 在搜索stackoverflow之后,Apple似乎推荐不超过1024x1024,但我发现同一iPhone 3G上的PhotoShop Express应用程序能够以原始高分辨率保存图像(例如1534x2034)

    有人可以给我一些关于如何将高分辨率图像保存到PhotoShop Express能够的相册中的想法吗?

    感谢。

2 个答案:

答案 0 :(得分:1)

即使没有内存警告,我也认为这是内存问题。我们需要更多关于您的崩溃的信息才能确定。你是如何拯救它的?您使用的是ALAssetsLibrary还是UIImageWriteToSavedPhotosAlbum?请注意,后者具有与CGImageRef或NSData一起使用的方法。值得尝试所有适用的比较方法。

答案 1 :(得分:1)

以为我会分享我在这个问题上的进展......

  1. 从照片库加载图像。 [imginfo objectForKey:@“UIImagePickerControllerOriginalImage”];
  2. 将“工作副本”调整为适合视图范围的大小。
  3. 在保存时,我有一个方法可以确定它运行的iOS设备型号,并返回一个维度的最大分辨率。对于iPhone 3G,我使用了1600px。
  4. 再次加载原始图像(objectForKey:@“UIImagePickerControllerOriginalImage”];)然后调整大小以适应1600px的范围(在这种情况下),同时保持纵横比。
  5. 不理想,但至少可以防止崩溃,并允许拥有较新硬件(例如3G或4)的个人以更高的分辨率进行保存。