Swift / iOS-以给定的宽高比保存图像

时间:2018-06-22 21:42:47

标签: ios swift aspect-ratio

我已经在网上搜索了几个小时,试图寻找解决方案,但是没有运气。

我已经阅读了一些已经提出的主题并接受了建议,但是看不到。

我已经在项目中安装了CropViewController窗格,并且图像/图像预览的纵横比为9:16,非常完美。问题是当我希望将此图像保存到用户照片库时。只是相同/正常的长宽比Original

这是我的代码。我在一个视图控制器中具有相机功能,在另一个视图控制器中具有图像的呈现和保存功能。

import UIKit
import CropViewController

class CameraPreviewController: UIViewController {
    var image: UIImage!
    @IBOutlet var imagePreview: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
              imagePreview.image = image
    }

    @IBAction func cancelButton_TouchUpInside(_ sender: Any) {
        navigationController?.popViewController(animated: true)
    }

    @IBAction func saveButton_TouchUpInside(_ sender: Any) {
        let croppedImage: UIImage = self.image
        let cropViewController = CropViewController(image: croppedImage)
        cropViewController.customAspectRatio = CGSize(width: 9.0, height: 16.0)
        self.image = croppedImage
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
        navigationController?.popViewController(animated: true)

    }
}

如何保存屏幕上的图像?我已经尝试过但是没有运气。图像为9:16,但保存时出现问题。我该如何克服这个问题?

谢谢。

2 个答案:

答案 0 :(得分:0)

您应在“ info.plist”中添加“隐私-照片库附加使用说明”。 尝试这种方法,希望这对您没有帮助,我会尝试寻找另一种方法。

func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
     UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}

答案 1 :(得分:0)

找到了解决方案。

更改了这一行代码-

captureSession.sessionPreset = .photo

到以下:

captureSession.sessionPreset = .iFrame1280x720