var img : CGImageRef
do {
img = try assetImgGenerate.copyCGImageAtTime(time, actualTime: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
let frameImg : UIImage = UIImage(CGImage: img)
return frameImg
我从“让帧”中得到的错误'行:
Variable 'img' used before being initialized
所以我认为我需要初始化' img'对象之前的对象。最简单的方法是什么?
对于Apple文档中的CGImageRef对象,似乎不是一个简单易用的构造函数。
我是否完全错误地设计了此代码?
答案 0 :(得分:0)
尝试这样的事情:
do {
var img = try assetImgGenerate.copyCGImageAtTime(time, actualTime: nil)
let frameImg: UIImage = UIImage(CGImage: img)
return frameImg
} catch {
fatalError(error.localizedDescription)
// it's up to you how to handle error; you can crash the app or return some other CGImageRef
}
答案 1 :(得分:0)
如果copyCGImageAtTime
抛出错误,您还不清楚图像的内容。我假设你想要一个透明的图像。
func frameImage(atTime time: CMTime) -> UIImage {
var transparentSinglePixelImage: CGImage {
let context = CGBitmapContextCreate(nil, 1, 1, 8, 4, CGColorSpaceCreateDeviceRGB(), CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue)
return CGBitmapContextCreateImage(context)!
}
var cgImage: CGImage?
do {
cgImage = try assetImgGenerate.copyCGImageAtTime(time, actualTime: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
return UIImage(CGImage: cgImage ?? transparentSinglePixelImage)
}
答案 2 :(得分:-1)
简单修复:
var img : CGImageRef?
do {
img = try assetImgGenerate.copyCGImageAtTime(time, actualTime: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
let frameImg : UIImage = UIImage(CGImage: img!)
return frameImg
注意'?'使变量可选