3

NSImageのメソッドを使用imageNamed:して現在のコンピューターのアイコンを取得する場合、Mac Mini で実行している場合、低解像度の画像が取得されます。同じコードを MacBook から実行すると、期待どおりの高解像度のアイコンが表示されます。

私のコードは次のとおりです。

NSImage *image;
image = [NSImage imageNamed:@"NSComputer"];
[image setSize: NSMakeSize(512,512)];
NSData  * tiffData = [image TIFFRepresentation];
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:tiffData];
data = [bitmap representationUsingType:NSPNGFileType properties:nil];
mime = @"image/png";

私の MacBook でそれを実行すると、すべてがうまく機能し、コンピューターの 512x512 のアイコンが表示されます。Mac Mini で実行すると、512x512 に拡大された 32x32 のアイコンが表示されます。

高解像度版を入手する方法についてのアイデアはありますか?

4

1 に答える 1

3

そのイメージはそこから来ていると思います/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

Mac mini アイコンの名前はcom.apple.macmini.icnsです。そのファイルにあなたのマシンに 512x512 のアイコンが含まれているかどうかを確認してください (Snow Leopard を実行している私の環境では含まれています)。

デバッグの目的で、 の出力も送信して、アイコンに 512x512 バージョンがあるかどうかを確認する必要があります-representationsNSLog

編集:

10.6 AppKit リリース ノートには、NSImage と CGImage の間の更新された関係についてかなりのことが書かれています。

Snow Leopard では、CGImageRef に変換することでフル解像度の画像を取得できます。

NSImage* image = [NSImage imageNamed:NSImageNameComputer];
NSRect imageRect = NSMakeRect(0, 0, 512, 512);
CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:nil hints:nil];

そこから、CGImageRef から新しい NSImage を作成するか、CGImageDestination* API を使用して png ファイルを書き込むことができます。

于 2009-10-27T05:03:21.577 に答える