Как предотвратить сбой UIGraphicsImageRenderer.image() при использовании UIImage.draw() для рисования большого изображенIOS

Программируем под IOS
Ответить
Гость
 Как предотвратить сбой UIGraphicsImageRenderer.image() при использовании UIImage.draw() для рисования большого изображен

Сообщение Гость »


Работая в Swift, я пытаюсь выполнить обрезку и другие простые изменения фотографий в полном разрешении для своего приложения для iOS. Однако, когда я пытаюсь нарисовать полноразмерное изображение в контексте, происходит сбой из-за проблем с памятью.

Я хотел использовать UIGraphicsImageRenderer.image() и сохранить их как UIimage, потому что пользователь мог добавить изображение, не снятое камерой iPhone, и у меня возникла проблема проблемы с ориентацией. Я предполагаю, что вместо этого мне понадобится использовать CGimage или что-то еще, чтобы решить эту проблему, но мне хотелось бы получить некоторые идеи о том, что я делаю неправильно.

Вот соответствующий код. Размер холста задается пользователем, выбирающим качество экспорта, наибольшее значение составляет 4000 x 4000. Сбой происходит, когда UIImage (который хранится в классе, в котором находится эта функция) имеет размер файла фотографии iPhone с полным разрешением 4032 x 3024.
if let loadingImage = uiImage { пусть рендерер = UIGraphicsImageRenderer (размер: CanvasSize) пусть img = renderer.image(){ ctx в // создаем фон пусть прямоугольник = CGRect (x: 0, y: 0, ширина: CanvasWidth, высота: CanvasHeight) ctx.cgContext.setFillColor(UIColor.white.cgColor) ctx.cgContext.addRect(прямоугольник) ctx.cgContext.drawPath(с использованием: .fill) //рисуем изображение loadingImage.draw(в: photoRect) } // конец renderer.image uiImage = изображение }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»