NSIMage unterschiedliche Größe im Code, der durch Finder/Vorschau unterschiedlich gezeigt wird

StackOverflow https://stackoverflow.com/questions/2990871

  •  24-10-2019
  •  | 
  •  

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:

ALT Text http://www.tomaszkrasnyk.yoyo.pl/image.jpg

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top