我希望为许多不同的文档类型(mp4,pdf,png和ppt)创建缩略图。我已经看到了单独执行它们的不同方法--MPMovieplayerController:requestThumbnailImagesAtTimes或获取当前图层的UIGraphicsGetCurrentContext(实际上是屏幕截图)。
有没有更好的方法来获取这些文件的缩略图?
获取项目缩略图的首选方法是什么?每种方法不同?
答案 0 :(得分:0)
据我所知,没有通用的方法可以做到这一点。我很想被证明是错的。
我在目前正在处理的应用程序中有相同的要求,并且昨天编写了缩略图生成器。我采用的方法是将路径传递给文件,并将完成处理程序块传递给缩略图生成器对象。
缩略图生成器有NSOperationQueue
,它在后台线程中生成缩略图生成过程,并立即返回占位符缩略图。
生成缩略图时,缩略图生成器会调用主线程上的完成处理程序。您可能需要使用NSInvocation
对象来完成此部分。
如果要生成多个缩略图,则同步执行会导致明显的延迟。使用占位符+完成处理程序块方法意味着UI保持响应。
在主线程上调用完成处理程序块很重要,因为它几乎肯定会更新您的视图,这应该只在主线程上完成。如果你不这样做,你会得到一些非常奇怪的错误,例如在你滚动之前滚动视图没有显示它们的内容。
你不应该真的需要使用MPMoviePlayerController
来获取视频的缩略图; AVAssetImageGenerator
是“Apple批准”的方式;有一个如何在the AV Foundation Programming Guide中执行此操作的示例。