質問

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アイコンが表示されます。

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

役に立ちましたか?

解決

画像は /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/から来ていると思います

Mac miniアイコンの名前は com.apple.macmini.icns です。マシン上でそのファイルに512x512アイコンが含まれているかどうかを確認することをお勧めします(私の場合はSnow Leopardを実行しています) '

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

編集:

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ファイルを書き込むことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top