Цель: обрезать 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
}
}