2011-02-18 4 views
1

여러 가지 다른 문서 유형 (mp4, pdf, png 및 ppt)에 대한 축소판을 만들려고합니다. 나는 MPMovieplayerController : requestThumbnailImagesAtTimes 또는 현재 레이어 (효과적으로 스크린 샷)의 UIGraphicsGetCurrentContext를 개별적으로 처리하는 여러 가지 방법을 보았습니다.다른 유형의 멀티미디어 용 사용자 정의 축소판

이러한 파일의 미리보기 이미지를 얻는 더 좋은 방법이 있습니까?

항목의 미리보기 이미지를 얻는 가장 좋은 방법은 무엇입니까? 각각 다른 방법?

답변

0

알고있는 한, 일반적인 방법이 없습니다. 나는 틀린 입증되고 싶다.

저는 현재 작업중인 앱에서 동일한 요구 사항을 가지고 있으며 어제 썸네일 생성기를 작성했습니다. 내가 취한 접근법은 파일에 대한 경로와 완료 핸들러 블록을 썸네일 생성기 객체에 전달하는 것이 었습니다.

썸네일 생성기는 배경 스레드에서 썸네일 생성 프로세스를 생성하고 즉시 자리 표시 자 축소판을 반환하는 NSOperationQueue을 가지고 있습니다.

썸네일이 생성되면 썸네일 생성기가 주 스레드에서 완료 핸들러를 호출합니다. 이 부분을 수행하려면 NSInvocation 개체를 사용해야 할 수도 있습니다.

두 개 이상의 미리보기 이미지를 생성하는 경우 동기식으로 처리하면 눈에 띄게 지연됩니다. 자리 표시 자 + 완료 핸들러 블록 접근 방식을 사용하면 UI가 응답 성이 유지됩니다.

주 스레드에서만 완료 처리기 블록을 호출하는 것이 중요합니다. 이는 주 스레드에서만 완료되어야하는보기를 거의 확실히 업데이트하기 때문입니다. 이렇게하지 않으면 스크롤 할 때까지 내용을 표시하지 않는 스크롤보기와 같은 아주 이상한 오류가 발생합니다.

동영상의 미리보기 이미지를 보려면 실제로 MPMoviePlayerController을 사용할 필요는 없습니다. AVAssetImageGenerator은 "Apple에서 승인 한"방법입니다. the AV Foundation Programming Guide에서이를 수행하는 방법에 대한 예가 있습니다.

+0

도움 주셔서 감사합니다. 당신이 말하는 palceholder + 완료의 몇 가지 예가 있습니까? 나는 전에 그것을 사용하지 않았다. 그리고 각 파일의 파일 확장명을보고 각 항목에 사용할 축소판을 결정 했습니까? – 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

관련 문제