Cel: Przycinanie UIImage
(który rozpoczyna się scale
własności 2.0)Jak przyciąć UIImage bez utraty jego właściwości skali?
I wykonać następujący kod:
let croppedCGImage = originalUIImage.cgImage!.cropping(to: cropRect)
let croppedUIImage = UIImage(cgImage: croppedCGImage!)
ten kod działa, jednak wynik, croppedUIImage
, ma nieprawidłowe scale
własność 1.0.
Próbowałem określające scale
przy tworzeniu ostatecznego obrazu:
let croppedUIImage = UIImage(cgImage: croppedCGImage!, scale: 2.0, orientation: .up)
Daje to właściwą skalę, ale tnie size
wymiary w połowie nieprawidłowo.
Co mam tu zrobić?
(* Uwaga: właściwość scale
na UIImage jest ważne, bo później zapisać obraz z UIImagePNGRepresentation(_ image: UIImage)
która zależy od własności scale
)
Edit:
dostałem Następujące do pracy. Niestety jest to znacznie wolniejsze niż funkcja przycinania 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
}
}
jak można się spodziewać ten kod będzie przyciąć obraz od położenia i wielkości rect za ?? to nie działa dla mnie –