似乎AVAssetImageGenerator()。copyCGImage在iOS 13.x上生成的图像颜色略有错误。颜色在iOS 12.4上正确。

其他人有没有经历过?

看起来像

1 = AVPlayer(正确的颜色)

2 = AVAssetImageGenerator结果

请注意,背景颜色略有不同。

swift - AVAssetImageGenerator生成颜色略有错误的图像,但仅在iOS 13.X上-LMLPHP

代码

extension AVPlayer{
    var poster: UIImage? {
        guard let asset = self.currentItem?.asset else {
            return nil
        }

        let videoFrameCGImage = try! AVAssetImageGenerator(asset: asset).copyCGImage(at: CMTimeMake(value: 1, timescale: 10), actualTime: nil)

        return UIImage(cgImage: videoFrameCGImage)
    }
}

最佳答案

生成缩略图时,我遇到了同样的问题,Pranav在上面的评论是我需要的提示。将输出CGImage复制到设备RGB色彩空间中对我有用:

generator.appliesPreferredTrackTransform = true
let thumbTime = CMTimeMakeWithSeconds(0, preferredTimescale: 30)
generator.maximumSize = maxSize ?? CGSize(width: 100, height: 100)
var cgImage = try? generator.copyCGImage(at: thumbTime, actualTime: nil)

// This was the missing line - correct the color space
cgImage = cgImage?.copy(colorSpace: CGColorSpaceCreateDeviceRGB())

if let cgImage = cgImage {
     return UIImage(cgImage: cgImage)
}
这更改了cgImage.colorSpace的使用方式:
<CGColorSpace 0x28248f660> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; HDTV)
使用:
<CGColorSpace 0x282484120> (kCGColorSpaceDeviceRGB)

关于swift - AVAssetImageGenerator生成颜色略有错误的图像,但仅在iOS 13.X上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62315326/

10-17 01:10