Я хочу разрешить пользователю выбирать фотографию, не ограничивая ее размер, а затем редактировать.Обработка больших изображений в iOS
Моя идея - создать миниатюру большой фотографии с тем же размером, что и экран для редактирования, а затем, когда редактирование закончится, используйте большую фотографию, чтобы сделать то же самое редактирование, которое было выполнено на миниатюре.
Когда я использую UIGraphicsBeginImageContext
, чтобы создать уменьшенное изображение, это вызовет проблему с памятью.
Я знаю, что трудно редактировать все большое изображение напрямую из-за ограничений по аппаратным средствам, поэтому я хочу знать, есть ли способ уменьшить размер большого изображения до менее 2048 * 2048 проблем с памятью?
Я нашел, что есть BitmapFactory
класс, который имеет опцию inSampleSize
, которая может понижать фото в платформе Android. Как это можно сделать на iOS?
Вы можете использовать NSData * data = [NSData dataWithContentsOfFile: параметры пути: NSDataReadingMappedAlways error: & error]; Чтобы получить доступ к данным изображения, не загружая их в память. – Sten
спасибо за отзыв Sten, я пробовал использовать параметр NSDataReadingMappedAlways, но он по-прежнему падает с 10000 * 10000 изображений, я думаю, что независимо от того, как загрузить изображение, использовать UIGraphicsBeginImageContext для масштабирования исходного изображения требуется весь растровый файл в памяти. Есть ли способ уменьшить размер изображения при загрузке файла jpeg/png в память? – lingtianlan