【问题标题】:While converting PHAsset to UIImage losing transparency将 PHAsset 转换为 UIImage 时失去透明度
【发布时间】:2016-11-12 00:17:09
【问题描述】:

在我从图像选择器中选择图像并尝试将 PHAsset 转换为 UIImage 后,图像失去了 png 图像的透明度。 我尝试到处搜索,但没有找到任何相关信息。

  func getAssetThumbnail(asset: PHAsset) -> UIImage {
        let manager = PHImageManager.defaultManager()
        let option = PHImageRequestOptions()
        var thumbnail = UIImage()
        option.synchronous = true
        manager.requestImageForAsset(asset, targetSize: CGSize(width: 341.0, height: 182.0), contentMode: .AspectFit, options: option, resultHandler: {(result, info)->Void in
            thumbnail = result!
        })
        return thumbnail
    }

之前的图片

选择并设置为图像视图后

【问题讨论】:

  • 您是否尝试过使用原始图像数据创建图像,即使用PHImageRequestOptions.version = . Original 调用requestImageDataForAsset。然后您可以从UIImage(data: data) 创建图像。
  • 不,我会再等一下
  • @LukeVanIn 我试过不工作
  • 是的,卢克,它可以作为答案发布,所以我可以接受它:)
  • 有预感的时候很棒:) 随意编辑答案。

标签: ios swift image uiimage phasset


【解决方案1】:

通过PHImageRequestOptions.version = . Original调用requestImageDataForAsset获取原始图像数据。然后您可以从UIImage(data: data) 创建图像。

例子:

 func getThumbnail(asset: PHAsset) -> UIImage? {

    var thumbnail: UIImage?

    let manager = PHImageManager.defaultManager()

    let options = PHImageRequestOptions()

    options.version = .Original
    options.synchronous = true

    manager.requestImageDataForAsset(asset, options: options) { data, _, _, _ in

        if let data = data {
            thumbnail = UIImage(data: data)
        }
    }

    return thumbnail
}

【讨论】:

  • 它返回 nil somethimes,因为图像是从内部块设置的,有没有解决这个问题的方法???
  • 它有效,但用户希望看到透明和裁剪(调整)的图像,如何处理?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多