Подтвердить что ты не робот

Как выбрать часть изображения, обрезать и сохранить его с помощью Swift?

Я пытаюсь создать приложение iOS с помощью Swift для захвата изображений и позволить пользователю сохранить выбранную часть изображения. Во многих приложениях на основе камеры я заметил, что предлагается прямоугольная рамка, чтобы пользователи могли выбрать нужную часть. Это предполагает либо скользящие края прямоугольника, либо перемещение углов, чтобы они соответствовали требуемой области.

Не могли бы вы посоветовать мне, как реализовать этот подвижный прямоугольник и как сохранить только этот фрагмент изображения?

4b9b3361

Ответ 1

Найдено еще одно решение. На этот раз он находится в Свифте. Решение выглядит элегантно, а код по сравнению с другими такими решениями записывается в меньшее количество строк.

Вот оно.. https://github.com/DuncanMC/CropImg Спасибо Duncan Champney за то, что он сделал свою работу на github.

Ответ 2

Использование Swift 3

Обрезка изображения может быть выполнена с помощью CGImages из CoreGraphics.

Получите CGImage версию UIImage следующим образом:

// cgImage is an attribute of UIImage
let cgImage = image.cgImage

Объекты CGImage имеют метод обрезки (до: CGRect), который выполняет обрезку:

let croppedCGImage: CGImage = cgImage.cropping(to: toRect)

Наконец, преобразуйте обратно из CGImage в UIImage:

let uiImage = UIImage(cgImage: croppedCGImage)

Пример функции:

func cropImage(image: UIImage, toRect: CGRect) -> UIImage? {
    // Cropping is available trhough CGGraphics
    let cgImage :CGImage! = image.cgImage
    let croppedCGImage: CGImage! = cgImage.cropping(to: toRect)

    return UIImage(cgImage: croppedCGImage)
}

Атрибут CGRect обрезки определяет "прямоугольник обрезки" внутри изображения, которое будет обрезано.