Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将高分辨率图像保存到相册_Iphone_Image_Image Processing_Uiimage - Fatal编程技术网

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

Iphone 将高分辨率图像保存到相册,iphone,image,image-processing,uiimage,Iphone,Image,Image Processing,Uiimage,我正在开发一个简单的图像处理应用程序,在我的测试单元(iPhone 3G)上遇到了一个问题,通常任何超过1024x1024像素的图像在保存时都会导致应用程序崩溃 我的应用程序的流程如下: 用户通过UIImagePicker选择图像 将创建选定图像的工作副本,并将其大小调整到视图边界(例如320x480),以提高性能 用户对工作副本执行图像操作,然后按save 对原始的全分辨率图像执行相同的操作,然后保存到相册中 如果图像大小为1024x1024,则一切正常。如果图像太大,则应用程序会崩溃,而不会

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

我的应用程序的流程如下:

  • 用户通过UIImagePicker选择图像

  • 将创建选定图像的工作副本,并将其大小调整到视图边界(例如320x480),以提高性能

  • 用户对工作副本执行图像操作,然后按save

  • 对原始的全分辨率图像执行相同的操作,然后保存到相册中

  • 如果图像大小为1024x1024,则一切正常。如果图像太大,则应用程序会崩溃,而不会出现任何内存警告。

  • 通过stackoverflow进行搜索后,苹果公司似乎建议不超过1024x1024,但我发现同一部iPhone 3G上的PhotoShop Express应用程序能够以原始高分辨率(例如1534x2034)保存图像

    有没有人能给我一些建议,如何像PhotoShop Express那样将高分辨率图像保存到相册中


    谢谢。

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

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

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