我正在开发一个OS X应用程序,使用AVAssetImageGenerator.generateCGImagesAsynchronouslyForTimes
方法,通常情况下它可以正常工作。但是偶尔会出现缩略图仅包含前几行像素的情况,并且其余部分都是绿色的,有时候图片会呈现不同的绿色调。由于这种情况并不总是发生,所以很难追踪问题,但当发生时,大约有一半的缩略图会受到影响。这是我希望看到的图像:
但经常会出现以下情况:
这是我用来生成缩略图的代码:
let assetGenerator = AVAssetImageGenerator(asset: AVURLAsset(URL: url))
assetGenerator.appliesPreferredTrackTransform = true
let time = CMTime(seconds: 0, preferredTimescale: 30)
let handler: AVAssetImageGeneratorCompletionHandler = { _, image, _, res, error in
defer { dispatch_group_leave(self.waitForThumbnail!) }
guard let image = image where res == .Succeeded else {
if let error = error { print(error) }
return
}
let s = CGSize(width: CGImageGetWidth(image), height: CGImageGetHeight(image))
self.thumbnail = NSImage(CGImage: image, size: s)
}
waitForThumbnail = dispatch_group_create()
dispatch_group_enter(waitForThumbnail!)
assetGenerator.maximumSize = maxThumbnailSize
assetGenerator.generateCGImagesAsynchronouslyForTimes([NSValue(CMTime: time)], completionHandler: handler)
这是我检索缩略图的方法:
dispatch_group_wait(file.waitForThumbnail!, DISPATCH_TIME_FOREVER)
dispatch_async(dispatch_get_main_queue()) {
self.imageView.image = file.thumbnail
}
非常感谢您的任何帮助!
AVAsset
的?如果你正在使用NSItemProvider
,它会带有一个完成处理程序,为该文件提供苹果默认的缩略图作为图像。 - NSGangsterAVURLAsset(URL:url)
来创建它们。 - AddisonNSItemProvider
确实有initWithURL
。 - NSGangster