У меня есть изображение, и я хочу обрезать его в соответствии с рамкой любого вида.Например,
Я действительно не могу найти решение.Я искал его в течение 2 дней.
ДО
ПОСЛЕ
РЕДАКТИРОВАНО
Спасибо @Ajharul Islam и @Bence Pattogato.Оба ответа работают.
Быстрая версия решения @Ajharul Islam.
func images(byCroppingImage image: UIImage?, to size: CGSize) -> UIImage? {
// not equivalent to image.size (which depends on the imageOrientation)!
let refWidth = (image?.cgImage?.width)!
let refHeight = (image?.cgImage?.height)!
let x = (Double(refWidth) - Double(size.width)) / 2
let y = (Double(refHeight) - Double(size.height)) / 2
let cropRect = CGRect(x: CGFloat(x), y: CGFloat(y), width: size.width, height: size.height)
let imageRef = image?.cgImage!.cropping(to: cropRect) as! CGImage
var cropped: UIImage? = nil
if let imageRefs = image?.cgImage!.cropping(to: cropRect) {
cropped = UIImage(cgImage: imageRefs, scale: 0.0, orientation: UIImage.Orientation.up)
}
return cropped
}
Позвольте мне сказать свою ошибку и то, что я пытался
Я пытался сделать снимок и обрезать его в соответствии с кадром любого вида.Я пытался обрезать картинку без изменения ее размера в соответствии с этим основным видом.Так что каждый раз это было неправильно.
Я изменил размер изображения и теперь могу успешно обрезать изображение.Но изменение размера снижает качество изображения.Так что теперь я пытаюсь найти лучший метод.
Спасибо