似乎 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)
}
}
Run Code Online (Sandbox Code Playgroud)
我在生成缩略图时遇到了同样的问题,上面 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)
}
Run Code Online (Sandbox Code Playgroud)
这改变了cgImage.colorSpace使用:
<CGColorSpace 0x28248f660> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; HDTV)
Run Code Online (Sandbox Code Playgroud)
使用:
<CGColorSpace 0x282484120> (kCGColorSpaceDeviceRGB)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |