似乎AVAssetImageGenerator()。copyCGImage在iOS 13.x上生成的图像颜色略有错误。颜色在iOS 12.4上正确。
其他人有没有经历过?
看起来像什么
1 = AVPlayer(正确的颜色)
2 = AVAssetImageGenerator结果
请注意,背景颜色略有不同。
码
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句