này là gần như Alexburtnik của câu trả lời
nhưng chỉ đề cập rằng UIImage.size là kích thước hợp lý (trong "điểm")
Tuy nhiên, CGImage.cropping() được sử dụng kích thước thực tế (theo "pixel")
do đó, nếu bạn sử dụng hình ảnh có @ 2x hoặc @ 3x công cụ sửa đổi, bạn sẽ thấy việc cắt thực sự là một nửa hoặc một phần ba kỳ vọng.
vì vậy khi bạn cắt, bạn có thể xem xét nhân rect bởi thuộc tính của hình ảnh "quy mô" đầu tiên, giống như sau:
func cropImage(image:UIImage, toRect rect:CGRect) -> UIImage? {
var rect = rect
rect.size.width = rect.width * image.scale
rect.size.height = rect.height * image.scale
guard let imageRef = image.cgImage?.cropping(to: rect) else {
return nil
}
let croppedImage = UIImage(cgImage:imageRef)
return croppedImage
}
Giả sử tôi có kích thước hình ảnh là 2448 × 3264 tôi muốn phần đó có nghĩa là màu đỏ. Các tham số toRect là gì ???? – BornShell
Xem thông tin này: http://stackoverflow.com/questions/37946990/cgrectmake-cgpointmake-cgsizemake-cgrectzero-cgpointzero-is-unavailable-in –