代码之家  ›  专栏  ›  技术社区  ›  Fawkes

PHAsset url返回nil图像

  •  0
  • Fawkes  · 技术社区  · 7 年前

    问题:加载带有从PHAsset获得的url的UIImage会返回nil。

    请求PHAsset url的代码:

            let inputRequestOptions = PHContentEditingInputRequestOptions()
            inputRequestOptions.isNetworkAccessAllowed = true
    
            asset.requestContentEditingInput(with: inputRequestOptions, completionHandler: { (edittingInput, _) in
                guard let url = edittingInput?.fullSizeImageURL else {
                    return
                }
    
                switch asset.mediaType {
                case .image: editMediaContentContainerPresenter.assets = [.image(url)]
                case .video: editMediaContentContainerPresenter.assets = [.movie(url)]
                default:
                    debugPrint("unsupported asset")
                }
            })
    

    将URL加载到我的UI组件内的UIImage的代码:

    func image(for url: URL, maximumPixelSize: CGFloat) -> UIImage? {
        let options = [kCGImageSourceCreateThumbnailWithTransform: true,
                       kCGImageSourceCreateThumbnailFromImageAlways: true,
                       kCGImageSourceThumbnailMaxPixelSize: maximumPixelSize] as CFDictionary
    
        guard let source = CGImageSourceCreateWithURL(url as CFURL, nil) else {
            return nil
        }
    
        guard let imageReference = CGImageSourceCreateThumbnailAtIndex(source, 0, options) else {
            return nil
        }
    
        return UIImage(cgImage: imageReference, scale: UIScreen.main.scale, orientation: .up)
    }
    

    问题:如何获取有效的URL。

    已考虑但需避免的解决方案:

    1. 传递UIImage而不是URL
    0 回复  |  直到 7 年前