【问题标题】:Image returned from UIImagePickerController goes beyond edge of image, adds black bar从 UIImagePickerController 返回的图像超出图像边缘,添加黑条
【发布时间】:2018-08-29 00:18:08
【问题描述】:

我让用户从 UIImagePickerController 中选择一个图像,然后当我访问该图像时,它有一个黑条。请注意,图像没有被裁剪,图像选择器实际上超出了不存在像素的图像边界并添加了空白区域。

我的代码:

@IBAction func selectImageButt(_ sender: Any) {
    let imagepicker = UIImagePickerController()
    imagepicker.allowsEditing = true
    imagepicker.sourceType = .photoLibrary
    imagepicker.delegate = self
    present(imagepicker, animated: true)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        testImageView.image = image
    }
    picker.dismiss(animated: true)
}

结果如下:

请注意,我已尝试将图像视图的 contentMode 更改为缩放以填充以及纵横比填充(不适合)。我不知道为什么将黑条添加为图像本身的一部分。有人可以帮忙吗?

【问题讨论】:

  • UIImagePickerControllerEditedImage 更改为 UIImagePickerControllerOriginalImage ??
  • 抱歉,我忘了留下allowsEditing。更新了问题。
  • 我会将问题隔离到 UIImage 或 UIImageView。在testImageView.image = image 处设置断点并快速查看image 以查看它是否有黑条。
  • 您找到解决方案了吗?我遇到了同样的问题。
  • 我的问题是一样的,我得到了一些解决方案,但它对我不起作用stackoverflow.com/a/13813738/1606492

标签: ios uiimagepickercontroller


【解决方案1】:

如果裁剪后的图像在原点之外,我已经通过使用原始图像解决了这个问题

guard let selectedImage = info[.editedImage] as? UIImage else {
        fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
    }

var image = selectedImage
 if let cropRect = info[.cropRect] as? CGRect {
     if cropRect.origin.y < 0 {
          guard let imageOrigin = info[.originalImage] as? UIImage else {
              fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
          }
          image = imageOrigin
      }

 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    相关资源
    最近更新 更多