Question

Lors de l’utilisation de la méthode imageNamed: de NSImage pour obtenir l’icône de l’ordinateur actuel, si j’exécute sur un Mac Mini, la résolution est faible. image. Si je lance le même code depuis mon MacBook, je reçois une icône haute résolution comme je le pensais.

Mon code est le suivant:

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";

Lorsque je lance ça sur mon MacBook, tout fonctionne à merveille et l’icône 512x512 de mon ordinateur apparaît. Lorsque je l’exécute sur mon Mac Mini, une icône 32x32 qui a été convertie en 512x512 est utilisée.

Avez-vous des idées pour obtenir la version haute résolution?

Était-ce utile?

La solution

Je pense que cette image provient de /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources /

L’icône Mac mini s’appelle com.apple.macmini.icns . Vous voudrez peut-être vérifier si ce fichier contient une icône 512x512 sur votre machine (sur la mienne, sous Snow Leopard) '

À des fins de débogage, vous devez également envoyer la sortie de -representations à NSLog pour vérifier que l'icône possède ou non une version 512x512.

Modifier:

Le 10.6 Notes de publication d'AppKit a beaucoup sur la relation mise à jour entre NSImage et CGImage.

Sur Snow Leopard, vous pouvez obtenir l’image en pleine résolution en effectuant la conversion en CGImageRef:

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

À partir de là, vous pouvez créer un nouveau NSImage à partir de CGImageRef ou utiliser les API CGImageDestination * pour écrire un fichier png.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top