Присвоение базовых графических изображений к миниатюрам
В некоторых случаях самый простой курс для генерации миниатюры должен создать Базовое Графическое изображение вместо того, чтобы создать изображение, совместимое с платформой I/O или нарисовать изображение в графическом контексте. Например, Ваш генератор мог бы использовать платформу, которая может непосредственно обеспечить сериализированную версию изображения миниатюр как a CGImage
объект. Поскольку это случается, можно создать Базовое Графическое изображение и затем передать то изображение к Беглому взгляду путем вызова QLThumbnailRequestSetImage
функция. Основное различие между этой функцией и QLThumbnailRequestSetImageWithData
это, последняя функция требует, чтобы данные изображения были в формате, поддерживающемся платформой I/O.
Перечисление 8-1 иллюстрирует подход, с помощью методов платформы Набора QT для получения кадра плаката фильма как Базовое Графическое изображение и устанавливая что как миниатюра для файла ролика.
Создание перечисления 8-1 и присвоение Базового Графического изображения
OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize) |
{ |
NSError *theErr; |
QTMovie *theMovie = [QTMovie movieWithURL:(__bridge NSURL *)url error:&theErr]; |
if (theMovie == nil) { |
if (theErr != nil) { |
NSLog(@"Couldn't load movie URL, error = %@", theErr); |
} |
return noErr; |
} |
[theMovie gotoPosterTime]; |
QTTime mTime = [theMovie currentTime]; |
NSDictionary *imgProp = [NSDictionary dictionaryWithObject:QTMovieFrameImageTypeCGImageRef forKey:QTMovieFrameImageType]; |
CGImageRef theImage = (__bridge CGImageRef)[theMovie frameImageAtTime:mTime withAttributes:imgProp error:&theErr]; |
if (theImage == nil) { |
if (theErr != nil) { |
NSLog(@"Couldn't create CGImageRef, error = %@", theErr); |
} |
return noErr; |
} |
QLThumbnailRequestSetImage(thumbnail, theImage, NULL); |
return noErr; |
} |