Цель: обрезать a UIImage (который начинается с свойства scale 2.0)
Я выполняю следующий код:
let croppedCGImage = originalUIImage.cgImage!.cropping(to: cropRect)
let croppedUIImage = UIImage(cgImage: croppedCGImage!)
Этот код работает, однако результат croppedUIImage имеет неправильное свойство scale 1.0.
Я попытался указать scale при создании окончательного изображения:
let croppedUIImage = UIImage(cgImage: croppedCGImage!, scale: 2.0, orientation: .up)
Это дает правильную шкалу, но уменьшает размеры size пополам.
Что мне здесь делать?
(* Примечание: свойство scale в UIImage важно, потому что позже я сохраняю изображение с UIImagePNGRepresentation(_ image: UIImage), на которое влияет свойство scale)
Edit:
У меня есть следующее, чтобы работать. К сожалению, это просто существенно медленнее, чем функция обрезки CGImage.
extension UIImage {
func cropping(to rect: CGRect) -> UIImage {
UIGraphicsBeginImageContextWithOptions(rect.size, false, self.scale)
self.draw(in: CGRect(x: -rect.origin.x, y: -rect.origin.y, width: self.size.width, height: self.size.height))
let croppedImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return croppedImage
}
}