Сохранение изображений в высоком разрешении в фотоальбом - PullRequest
0 голосов
/ 15 октября 2010

Я занимаюсь разработкой простого приложения для обработки изображений, и на моем тестовом устройстве (iPhone 3G) я обнаружил проблему, заключающуюся в том, что любое изображение размером более 1024x1024 пикселей вызывает сбой приложения при сохранении.

Процесс моего приложения выглядит следующим образом:

  1. Пользователь выбирает изображение с помощью UIImagePicker

  2. Рабочая копия выбранного изображения создается и масштабируется до границ вида(например, 320x480) для производительности.

  3. Пользователь выполняет свои манипуляции с изображениями на рабочей копии и нажимает сохранить

  4. Те же манипуляции выполняются с исходным изображением в полном разрешении, затемсохранено в фотоальбом.

  5. Если изображение находится в области 1024x1024, все в порядке, если слишком большое приложение вылетает без предупреждения памяти.

После поиска через stackoverflow кажется, что эта рекомендация Apple не должна превышать 1024x1024, однако я обнаружил, что приложение PhotoShop Express на том же iPhone 3G может сохранять изображения с их оригинальным высоким разрешением (например, 1534x2034).).

Может, кто-нибудь подскажет, как сохранить изображения с высоким разрешением в фотоальбом, как это умеет PhotoShop Express?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Думаю, я поделюсь с вами этой проблемой ...

  1. Загрузите изображение из библиотеки фотографий.[imginfo objectForKey: @ "UIImagePickerControllerOriginalImage"];
  2. Измените размер «рабочей копии» до размера, который соответствует границам вида.
  3. Во время сохранения у меня есть метод, который определяет, на какой модели устройства iOS оно работает, и возвращаетэто максимальное разрешение для одного измерения.Для iPhone 3G я использовал 1600px.
  4. Исходное изображение загружается снова (objectForKey: @ "UIImagePickerControllerOriginalImage"];), а затем изменяется в пределах 1600px (в данном случае), сохраняя при этом соотношение сторон.

Не идеально, но, по крайней мере, это предотвращает сбой и позволяет пользователям с более новым оборудованием (например, 3G или 4) экономить при более высоких разрешениях.

1 голос
/ 15 октября 2010

Несмотря на отсутствие предупреждения о памяти, я предполагаю, что это проблема с памятью. Нам нужно больше информации о вашей аварии, чтобы знать наверняка. Как вы сохраняете это? Вы используете ALAssetsLibrary или UIImageWriteToSavedPhotosAlbum? Обратите внимание, что у последнего есть методы, которые работают с CGImageRef или NSData. Для сравнения стоит попробовать все применимые методы.

...