2011-02-18 1 views
1

Я ищу для создания эскизов для нескольких типов документов (mp4, pdf, png и ppt). Я видел разные методы для их индивидуального использования - MPMovieplayerController: requestThumbnailImagesAtTimes или получить UIGraphicsGetCurrenttext текущего слоя (эффективно снятый снимок экрана).Пользовательские миниатюры для различных типов мультимедиа

Есть ли лучший способ получить миниатюры этих файлов?

Каков предпочтительный метод получения миниатюр элементов? Разный метод для каждого?

ответ

0

Насколько я знаю, нет общего способа сделать это. Мне бы хотелось, чтобы я был ошибочен.

У меня такое же требование в приложении, над которым я сейчас работаю, и написал генератор миниатюр вчера. Подход, который я принял, состоял в том, чтобы передать путь к файлу и блок обработчика завершения до объекта генератора эскизов.

Генератор миниатюр имеет NSOperationQueue, который порождает процесс генерации миниатюр в фоновом потоке и сразу же возвращает миниатюру заполнителя.

Когда миниатюра сгенерирована, генератор миниатюр вызывает обработчик завершения в основном потоке. Для этой части вам, вероятно, понадобится объект NSInvocation.

Выполнение этого синхронно приводит к заметной задержке, если у вас есть более чем несколько эскизов для генерации. Использование подхода компоновщика + завершения обработчика блокировки означает, что пользовательский интерфейс остается отзывчивым.

Важно называть блок обработчика завершения основного потока, потому что он почти наверняка будет обновлять ваши представления, которые должны выполняться только в основном потоке. Если вы этого не сделаете, вы получите некоторые очень странные ошибки, например, прокрутки, не отображающие их содержимое, пока вы не пролистнете их.

Вам не нужно использовать MPMoviePlayerController, чтобы получить миниатюры видео; AVAssetImageGenerator - это «одобренный Apple» способ сделать это; есть пример того, как это сделать в the AV Foundation Programming Guide.

+0

Спасибо за помощь. Есть ли у вас несколько примеров того, как вы понимаете, что у вас есть. Раньше я этого не использовал. И вы просто посмотрели расширение файла для каждого файла, чтобы определить, какой миниатюру использовать для каждого элемента? – smcdrc

+0

Это ничего особенного, местозаполнитель - это то, что вы используете до создания эскизов. Поэтому, если все, что вы создаете, это 'UIImage', тогда вы можете вернуть« UIImage »с общим значком, который может отображаться вашим контроллером вида, и затем заменить его, когда эскиз был сгенерирован. – Jim

+0

Обработчик завершения - это блок, для которого см. [Краткое практическое руководство по блокам] (http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html%23//apple_ref/doc/ UID/TP40009758). Я кратко экспериментировал с делегатами, но решил, что для этой цели они были слишком жесткими. – Jim

 Смежные вопросы

  • Нет связанных вопросов^_^