Frage

ich denke, ich bin wirklich fehlt etwas Grundsätzliches hier. Wenn ich dies mit einem Recht URL / Pfad tun, was ich weiß, gibt es:

NSImage* img = [[NSImage alloc] initWithContentsOfFile:[[selectedItem url] path]];
NSLog(@"Image width: %d height: %d", [img size].width, [img size].height);

dann werde ich an die Konsole berichtet, dass die Breite ist -2080177216 und die Höhe 0. Obwohl ich weiß, dass die Breite tatsächlich 50 ist und die Höhe 50 Ich habe versucht, isValid Aufruf und es gibt ja, und ich habe auch versucht, die Kontrolle Größe der ersten Darstellung, und es ergab die gleichen Werte durcheinander. Wie kommt das Bild wird nicht richtig geladen?

War es hilfreich?

Lösung

Die size Methode gibt einen NSSize, eine Struktur, deren width und height Mitglieder sind vom Typ float. Sie sind sie als int behandeln. Verwenden %f und alles sollte in Ordnung sein.

Andere Tipps

Ist diese Hilfe?

setSize:

Legt die Breite und Höhe des Bildes.

- (void)setSize:(NSSize)aSize

Diskussion:

Die Größe eines NSImage Objekt muss eingestellt werden, bevor sie verwendet werden kann. Wenn die Größe des Bildes nicht bereits gesetzt worden ist, wenn eine Bilddarstellung hinzugefügt wird, wird die Größe von der Bilddarstellung der Daten übernommen. Für EPS-Bilder wird die Größe von dem Bildbegrenzungsrahmen genommen. Bei TIFF-Bildern wird die Größe vom ImageLength genommen und Width-Attribute.

Ändern der Größe eines NSImage nach Verändern der Größe verwendet wurde effektiv das Bild. Ändern der Größe Ungültigmachungseinträge all ihren Caches und befreit sie. Wenn das Bild nächste Compositing, wird die gewählte Darstellung selbst in einem Off-Screen-Fenster ziehen, den Cache neu zu erstellen.

Verfügbarkeit Erhältlich in Mac OS X v10.0 und höher. Siehe auch

Siehe NSImage Größe nicht reale Größe mit einigen Bildern?

Sie müssen durchlaufen NSImageRep und legen Sie die Größe der größten gefunden.

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