【问题标题】:Saving hi-res images to photo album将高分辨率图像保存到相册
【发布时间】:2010-10-20 13:39:26
【问题描述】:

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

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

  1. 用户通过 UIImagePicker 选择图像

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

  3. 用户对工作副本进行图像处理并按下保存

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

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

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

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

谢谢。

【问题讨论】:

    标签: iphone image image-processing uiimage


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我想分享一下我是如何处理这个问题的……

      1. 从照片库加载图像。 [imginfo objectForKey:@"UIImagePickerControllerOriginalImage"];
      2. 将“工作副本”调整为适合视图边界的大小。
      3. 在保存时,我有一个方法可以确定它在哪个型号的 iOS 设备上运行,并返回一个维度的最大分辨率。对于 iPhone 3G,我使用了 1600 像素。
      4. 再次加载原始图像 (objectForKey:@"UIImagePickerControllerOriginalImage"];) 然后调整大小以适应 1600 像素的范围(在本例中),同时保持纵横比。

      不理想,但至少这可以防止崩溃,并允许使用较新硬件(例如 3G 或 4)的个人以更高分辨率保存。

      【讨论】:

        猜你喜欢
        • 2016-12-18
        • 2014-10-03
        • 2015-10-20
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多