NSIMage unterschiedliche Größe im Code, der durch Finder/Vorschau unterschiedlich gezeigt wird
Frage
Ich habe ein paar Bilder, die ich in meiner Anwendung verwende (einer von ihnen ist beigefügt). Das Seltsame ist, dass die reale Bildgröße (von Finder und Vorschau gezeigt) 1200 x 701 PX beträgt.
Wenn ich aus dem Code auf das Bild zugreife und seine Größe betrifft, erhalte ich 360x210px. Was ist los?
Code, den ich verwende, um die Größe des Bildes zu erhalten:
NSImage *newImg = [[NSImage alloc] initWithContentsOfURL:
[NSURL URLFromPasteboard:[sender draggingPasteboard]]];
float h = [newImg size].height; //height is 210px - should be 701px
float w = [newImg size].width; //width is 320px - should be 1200px
Der Inhalt des NewImg ist das gleiche Bild, das gezeigt und geladen wurde. Ich zeige es trotzdem in der NSIMageView, so dass ich es sehe. Genau die Größe mitgenommen mit -size
ist falsch.
Dies ist das Bild:
Lösung
Ich glaube, dass -[Nsimage -Größe] die Größe in Punkten zurückgibt, nicht in Pixeln. Deshalb verfügt NSIMageRep sowohl über eine Größenmethode als auch eine Pixelshigh- und Pixelswide -Methoden. Ihr Bild ist anscheinend nicht bei einer Auflösung von 72 DPI.
Andere Tipps
NSImageRep *imgRep = [NSImageRep imageRepWithContentsOfFile:imagePath];
int imageWidth = (int)[imgRep pixelsWide];
int imageHeight = (int)[imgRep pixelsHigh];
imgRep = nil;
NSLog(@"original image width: %d",imageWidth);
NSLog(@"original image height: %d",imageHeight);
Ein NSImage
Kann mehrere Darstellungen desselben Bildes enthalten, jeweils an verschiedenen Größen. Ich würde einen Blick auf das werfen -representations
Methode auf NSImage
, und schauen Sie sich dann einen an. NSImageRep
Das Objekt wurde im Array zurückgegeben, um zu sehen, was alles hat.