0

QuickLookプラグインを書いています。まあ、すべてが動作します。それをもっと良くしてみてください;)。したがって、質問。
これがサムネイル画像を返す関数で、今使っているものです。

QLThumbnailRequestSetImageWithData(
QLThumbnailRequestRef thumbnail,
CFDataRef data,
CFDictionaryRef properties);
);

http://developer.apple.com/mac/library/documentation/UserExperience/Reference/QLThumbnailRequest_Ref/Reference/reference.html#//apple_ref/c/func/QLThumbnailRequestSetImageWithData

今、私はTIFFを作成しています->それをNSDataにカプセル化します。例

// Setting CFDataRef
CGSize thumbnailMaxSize = QLThumbnailRequestGetMaximumSize(thumbnail);
NSMutableAttributedString *attributedString = [[[NSMutableAttributedString alloc] 
                                                   initWithString:@"dummy" 
                                                   attributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                               [NSFont fontWithName:@"Monaco" size:10], NSFontAttributeName, 
                                                               [NSColor colorWithCalibratedRed:0.0 green:0.0 blue:0.0 alpha:1.0], NSForegroundColorAttributeName, 
                                                               nil]
                                                   ] autorelease];
NSImage *thumbnailImage = [[[NSImage alloc] initWithSize:NSMakeSize(thumbnailMaxSize.width, thumbnailMaxSize.height)] autorelease];
[thumbnailImage lockFocus];
[[NSColor whiteColor] set];
NSRectFill(NSMakeRect(0, 0, thumbnailMaxSize.width, thumbnailMaxSize.height));
[attributedString drawInRect:NSMakeRect(0, 0, thumbnailMaxSize.width, thumbnailMaxSize.height)];
[thumbnailImage unlockFocus];
(CFDataRef)[thumbnailImage TIFFRepresentation]; // This is data

// Setting CFDictionaryRef
(CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys:@"kUTTypeTIFF", (NSString *)kCGImageSourceTypeIdentifierHint, nil ]; // this is properties

ただし、QuickLookには、サムネイル画像を返す別の関数があります。

QLThumbnailRequestSetImage(
QLThumbnailRequestRef thumbnail,
CGImageRef image,
CFDictionaryRef properties);
);

http://developer.apple.com/mac/library/documentation/UserExperience/Reference/QLThumbnailRequest_Ref/Reference/reference.html#//apple_ref/c/func/QLThumbnailRequestSetImage

TIFFデータの代わりにCGImageをQLに渡すと、処理が高速化されると思います。ただし、これまでCGコンテキストを使用したことはありません。私は知っています、ドキュメントはそこにあります:)、しかしとにかく-誰かがそのNSAttributed文字列をCGImageRefに変える方法の例を与えることができます。例は、ドキュメントを10回読む価値があります;)
助けていただければ幸いです。前もって感謝します!

4

1 に答える 1

0

NSAttributed文字列をCGImageRefに変換する方法の例を誰かに教えてもらえますか。

文字列を画像に変換することはできません。これらは2つのまったく異なる種類のデータであり、1つは2次元(時間の経過に伴う文字)であり、もう1つは少なくとも3次元(xとyの色)です。

あなたがする必要があるのは、ひもを描き、その絵のイメージを作り出すことです。これが、NSImageで現在行っていることです。画像を作成して文字列を描画します。

CGImageの作成について質問しています。ビットマップコンテキストを作成し、Core Textを使用して文字列を描画し、ビットマップコンテキストのコンテンツの画像を作成することは、そのための1つの方法です。

ただし、Snow Leopardが必要になる可能性があると仮定すると、すでに別のソリューションにかなり近づいています。NSImageにTIFF表現を要求する代わりに、CGImageを要求します

于 2010-04-28T17:13:34.920 に答える