2010-09-17 24 views
1

Je pense qu'il me manque quelque chose de vraiment basique ici. Si je le fais avec une URL juridique/chemin que je connais existe:La taille de NSImage est incorrecte

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

alors je suis à la console signalé que la largeur est -2080177216 et la hauteur 0. Bien que je sache que la largeur est en fait 50 et la hauteur 50. J'ai essayé d'appeler isValid et il retourne YES, et j'ai aussi essayé de vérifier la taille de la première représentation et elle a retourné les mêmes valeurs. Comment se fait-il que l'image ne se charge pas correctement?

Répondre

9

La méthode size retourne un NSSize, dont une struct width et height membres sont de type float. Vous les traitez comme int. Utilisez %f et tout devrait bien se passer.

+1

+1 ne souhaitez-vous pas qu'il y ait une substitution '% anything' qui enregistrerait juste la bonne chose? –

+1

@Dave Ce serait trop facile! – walkytalky

+0

merci. oui il devrait y avoir quelque chose comme en C#! – evilfred

3

Est-ce que cela aide?

setSize: 

Définit la largeur et la hauteur de l'image.

- (void)setSize:(NSSize)aSize 

Discussion:

La taille d'un objet NSImage doit être réglé avant qu'il ne puisse être utilisé. Si la taille de l'image n'a pas déjà été définie lors de l'ajout d'une représentation d'image, la taille est prise à partir des données de la représentation de l'image. Pour les images EPS, la taille est prise dans la zone de délimitation de l'image. Pour les images TIFF, la taille est prise à partir des attributs ImageLength et ImageWidth.

La modification de la taille d'un NSImage après utilisation a redimensionné l'image. Changer la taille invalide toutes ses caches et les libère. Lorsque l'image est ensuite composée, la représentation sélectionnée va se dessiner dans une fenêtre hors écran pour recréer le cache.

Disponibilité Disponible dans Mac OS X v10.0 et versions ultérieures. Voir aussi

+0

J'ai essayé de récupérer les pixelsWide et pixelsHeight à partir de l'image rep, et de les utiliser pour faire une nouvelle taille et le définir sur le NSImage. Cependant, après avoir appelé setSize avec 50x50 sur le NSImage, si je vérifie la taille que je reçois à partir de celui-ci, il retourne encore la taille foirée !! – evilfred

+2

'initWithContentsOfFile' va définir la taille. Le problème est la journalisation avec '% d'. – walkytalky