【问题标题】:Custom thumbnails for different types of multimedia不同类型多媒体的自定义缩略图
【发布时间】:2011-02-19 03:19:57
【问题描述】:

我希望为多种不同的文档类型(mp4、pdf、png 和 ppt)创建缩略图。我已经看到了单独执行它们的不同方法 - MPMovieplayerController: requestThumbnailImagesAtTimes 或获取当前层的 UIGraphicsGetCurrentContext (实际上是屏幕截图)。

有没有更好的方法来获取这些文件的缩略图?

获取项目缩略图的首选方法是什么?每个方法不同?

【问题讨论】:

    标签: iphone objective-c mpmovieplayercontroller thumbnails


    【解决方案1】:

    据我所知,没有通用的方法可以做到这一点。不过我很乐意被证明是错误的。

    我目前正在开发的应用程序有相同的要求,并且昨天编写了缩略图生成器。我采用的方法是将文件的路径和完成处理程序块传递给缩略图生成器对象。

    缩略图生成器有一个NSOperationQueue,它在后台线程中产生缩略图生成过程并立即返回占位符缩略图。

    生成缩略图时,缩略图生成器会调用主线程上的完成处理程序。您可能需要使用 NSInvocation 对象来完成此部分。

    如果要生成多个缩略图,同步执行会导致明显的延迟。使用占位符+完成处理程序块方法意味着 UI 保持响应。

    在主线程上调用完成处理程序块很重要,因为它几乎肯定会更新您的视图,而这应该只在主线程上完成。如果你不这样做,你会得到一些非常奇怪的错误,比如滚动视图直到你滚动它们才显示它们的内容。

    虽然你不应该真的需要使用MPMoviePlayerController 来获取视频的缩略图; AVAssetImageGenerator 是“Apple 认可”的方式; the AV Foundation Programming Guide 中有一个如何执行此操作的示例。

    【讨论】:

    • 感谢您的帮助。你有一些你正在谈论的占位符+完成的例子吗?我以前没用过。而且,您是否只是查看了每个文件的文件扩展名来确定每个项目使用哪个缩略图?
    • 没什么特别的,占位符只是你在生成缩略图之前使用的东西。因此,如果您创建的只是UIImage,那么您可能会返回一个带有通用图标的UIImage,您的视图控制器最初可以显示该图标,然后在生成缩略图时替换。
    • 完成处理程序是一个块,参见A Short Practical Guide to Blocks。我对代表进行了简短的试验,但认为它们对于此目的有点过于僵化。
    • 抱歉,我以为你的意思是别的。
    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2015-04-10
    • 2022-09-29
    • 1970-01-01
    相关资源
    最近更新 更多