AVAssetImageGenerator.generateCGImagesAsynchronouslyForTimes
kullanan bir OS X uygulaması üzerinde çalışıyorum ve normal olarak iyi çalışıyor. Ancak, bir süre sonra geri döndüğüm küçük resim sadece ilk birkaç piksel satırını içeriyor ve geri kalanı yeşil, bazen görüntüler yeşilin farklı tonları olacak. İzlenmesi çok zor çünkü tutarlı bir şekilde gerçekleşmiyor, ancak küçük resimlerin yarısı etkilendiğinde.generateCGImagesAsenkronizeForZamanlar bazen küçük resimlerin tamamını oluşturmuyor
Ama çoğu kez bu olur: Burada
Ben küçük resimler oluşturmak için kullanıyorum kodudur: Bu benim görmeyi beklediğimiz bir resimdirlet 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)
Ve bu şekilde küçük resimlerini nasıl alıyorum:
dispatch_group_wait(file.waitForThumbnail!, DISPATCH_TIME_FOREVER)
dispatch_async(dispatch_get_main_queue()) {
self.imageView.image = file.thumbnail
}
Herhangi bir yardım için teşekkür ederiz, teşekkürler!
Merak ettiğim şey AVAsset'in nasıl oluşturulmasını sağlıyorsunuz? Eğer 'NSItemProvider' kullanıyorsanız, bu dosyanın görüntüsü olarak Apple'ın varsayılan küçük resmini veren tamamlayıcı işleyici ile birlikte gelir. – NSGangster
Gerçekten mi? Kulağa hoş geliyor, teşekkürler bunu denemeliyim. Şimdi onları oluşturmak için 'AVURLAsset (URL: url)' kullanıyorum. – Addison
[Link] (https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSItemProvider_Class/#//apple_ref/occ/instm/NSItemProvider/loadPreviewImageWithOptions:completionHandler]). İşte bu önizleme görüntü işleyicisine bir bağlantı. Ve ben sadece bunu kullanmak istedim 'NSItemProvider' initWithURL' var kontrol ettim. – NSGangster