Цель: Обрезка UIImage
(который начинается с scale
свойство 2.0)Как обрезать UIImage, не теряя при этом свойство масштаба?
я выполнить следующий код:
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
}
}
, как вы ожидаете, этот код будет обрезать изображение от положения и размера прямоугольника в ?? его не работает для меня –