без линии
учаю изображения с разрешением 1920x1080. Я пытаюсь обрезать их до центральной площади квадрата (т.е. 1080x1080 квадрата в центре). Разрешение может измениться в будущем. Можно ли обрезать изображение таким образом? Я попробовал пару вещей, размещенных на SO, но я всегда получаю изображение размером 660x1080, если я пытаюсь обрезать его по центру. Вот изображение, изображающее то, чего я хочу достичь.
По сути, красный - оригинал, зеленый - то, что я хочу, а желтый - просто линии mixX и midY.
Код, который я пробовал.
func imageByCroppingImage(image: UIImage, toSize size: CGSize) -> UIImage{
let newCropWidth: CGFloat?
let newCropHeight: CGFloat?
if image.size.width < image.size.height {
if image.size.width < size.width {
newCropWidth = size.width
} else {
newCropWidth = image.size.width
}
newCropHeight = (newCropWidth! * size.height) / size.width
} else {
if image.size.height < size.height {
newCropHeight = size.height
} else {
newCropHeight = image.size.height
}
newCropWidth = (newCropHeight! * size.width) / size.height
}
let x = image.size.width / 2.0 - newCropWidth! / 2.0
let y = image.size.height / 2.0 - newCropHeight! / 2.0
let cropRect = CGRect(x: x, y: y, width: newCropWidth!, height: newCropHeight!)
let imageRef = image.cgImage!.cropping(to: cropRect)
let cropped = UIImage(cgImage: imageRef!, scale: 1.0, orientation: .right)
return cropped
}
И затем я передаю этот метод CGSize (1080, 1080). Я получаю изображение 660, 1080. Есть мысли?
Намерение состоит в том, чтобы обрезать изображение, а не просто отображать его по центру.