Обработка / уменьшение изображений с высоким разрешением с iOS - PullRequest
0 голосов
/ 09 июня 2011

В настоящее время я работаю над «dropbox» -подобным приложением, в которое встроен просмотрщик файлов / изображений.

Проблема: когда пользователь сохранил изображение с высоким разрешением на сервере и хочет просмотреть его на устройстве, приложение вылетит.

Пример: панорамное фото с разрешением 12000x4000 пикселей. Есть ли способ уменьшить это изображение (на стороне клиента - iOS)?

В данный момент я использую следующие классы: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

Но мне нужно найти способ, не используя> 300 Мб памяти ...

Ответы [ 3 ]

5 голосов
/ 09 июня 2011

Если вы управляете сервером, то делайте это на стороне сервера.Я не хотел бы загружать изображение 12000x4000 через 3G, просто чтобы просмотреть его до 640x960.

1 голос
/ 03 мая 2012

Ознакомьтесь с примером проекта кода Apple Уменьшение большого изображения .В отличие от CATiledLayer, он фактически создаст новое уменьшенное изображение в памяти из большего изображения на локальном диске iOS.При полном уменьшении CATiledLayer будет пытаться декодировать все исходное изображение, как требуется для его отображения.

Этот метод, однако, уменьшает исходное изображение в полосах полной ширины, поэтому все это никогда не пытается загрузить в память все сразу.TIFF, JPEG, PNG поддерживаются.BMP, GIF, чересстрочные изображения не поддерживаются.

Как уже упоминалось в ReadMe, исходное изображение может существовать в комплекте приложений, в фотопленке или где-то еще (например, в загруженном OTA).

1 голос
/ 17 июня 2011

Вы должны рассмотреть обработку этого изображения так же, как Google Maps обрабатывает большие изображения, выполнив некоторую коронку изображений поверх CATiledLayer, пожалуйста, посмотрите пример PhotoScroller в документации Apple.

...