Как предотвратить сбой UIGraphicsImageRenderer.image() при использовании UIImage.draw() для рисования большого изображен ⇐ 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 = изображение }
Работая в 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 = изображение }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение