Присвоение базовых графических изображений к миниатюрам

В некоторых случаях самый простой курс для генерации миниатюры должен создать Базовое Графическое изображение вместо того, чтобы создать изображение, совместимое с платформой 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;
}