Как создать обрезанное изображение баннера в uiimagepickercontroller? - PullRequest
0 голосов
/ 22 октября 2018

Когда я представляю UIImagePickerController, я хочу, чтобы пользователь мог обрезать отношение 7,8 для баннера, который пользователь хочет импортировать из своей библиотеки фотографий.

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

1 Ответ

0 голосов
/ 22 октября 2018

Попробуйте это:

open func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    var newImage: UIImage

    if picker.sourceType == .camera {
        if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
            // save photo
        }
    }

    if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad && picker.sourceType == .photoLibrary {
        if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
            newImage = possibleImage
        }
    } else {
        if let possibleImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
            newImage = possibleImage
        } else if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
            newImage = possibleImage
        }
    }

    // logic to manipulate image
    print("image size: \(newImage.size)")

    let newHeight = 100 // change to preferred height
    let scale = 7.8
    let newWidth = newImage.size.width

    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))

    newImage.draw(in: CGRect(x: 0, y: 0,width: newWidth, height: newHeight))
    newImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    print("image size: \(newImage.size)")

    // add logic here
}
...