NSImage size is wrong

一个人想着一个人 提交于 2019-12-24 13:52:48

问题


I think i'm missing something really basic here. If I do this with a legal URL/path which I know exists:

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

then I get reported to the console that the width is -2080177216 and the height 0. Although I know that the width is actually 50 and the height 50. I tried calling isValid and it returns YES, and I also tried checking the size of the first representation and it returned the same messed up values. How come the image is not loading properly?


回答1:


The size method returns an NSSize, a struct whose width and height members are of type float. You're treating them as int. Use %f and everything should be fine.




回答2:


Does this help?

setSize:

Sets the width and height of the image.

- (void)setSize:(NSSize)aSize

Discussion:

The size of an NSImage object must be set before it can be used. If the size of the image hasn’t already been set when an image representation is added, the size is taken from the image representation's data. For EPS images, the size is taken from the image's bounding box. For TIFF images, the size is taken from the ImageLength and ImageWidth attributes.

Changing the size of an NSImage after it has been used effectively resizes the image. Changing the size invalidates all its caches and frees them. When the image is next composited, the selected representation will draw itself in an offscreen window to recreate the cache.

Availability Available in Mac OS X v10.0 and later. See Also




回答3:


See NSImage size not real size with some pictures?

You need to iterate through NSImageRep and set the size from the largest found.



来源:https://stackoverflow.com/questions/3739165/nsimage-size-is-wrong

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!