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