При обрезке CGImage в Swift 3 (с использованием метода .cropping) исходный CGImage ссылается на обрезанную версию - как в соответствии с документацией, так и в соответствии с показаниями инструментов Allocations меня.Swift: «Уплотнение» обрезанного CGImage
Я помещаю обрезанные объекты CGImage в стопку отмены, поэтому, если исходные версии сохраняют «затраты» меня на 21 мб памяти на элемент отмены.
Поскольку не существует очевидный способ «компактный» обрезанный CGImage и он сделал независимым от оригинала, я в настоящее время сделать что-то похожее на следующее (без всякой силы разворачивания):
let croppedImage = original.cropping(to: rect)!
let data = UIImagePNGRepresentation(UIImage(cgImage: croppedImage))!
let compactedCroppedImage = UIImage(data: data)!.cgImage!
Это работает отлично, и теперь каждый снимок моментально снимает только объем памяти, который он должен использовать.
Мой вопрос: есть ли лучший/более быстрый способ достичь этого?
Отлично! Большое спасибо! –