我想我错过了一些非常基本的东西。如果我使用我知道存在的合法网址/路径执行此操作:
NSImage* img = [[NSImage alloc] initWithContentsOfFile:[[selectedItem url] path]];
NSLog(@"Image width: %d height: %d", [img size].width, [img size].height);
然后我向控制台报告宽度为-2080177216且高度为0.虽然我知道宽度实际为50且高度为50.我尝试调用isValid并返回YES,我也尝试检查第一个表示的大小,它返回相同的混乱值。为什么图像加载不正确?
答案 0 :(得分:9)
size
方法返回NSSize
,width
和height
成员类型为float
的结构。你将它们视为int
。使用%f
,一切都应该没问题。
答案 1 :(得分:3)
这有帮助吗?
setSize:
设置图像的宽度和高度。
- (void)setSize:(NSSize)aSize
讨论:
必须先设置NSImage对象的大小,然后才能使用它。如果在添加图像表示时尚未设置图像的大小,则从图像表示的数据中获取大小。对于EPS图像,尺寸取自图像的边界框。对于TIFF图像,大小取自ImageLength和ImageWidth属性。
使用后更改NSImage的大小可以有效调整图像的大小。更改大小会使其所有缓存无效并释放它们。当下一次合成图像时,所选表示将在屏幕外窗口中绘制自己以重新创建缓存。
状况 适用于Mac OS X v10.0及更高版本。 另见
答案 2 :(得分:1)
请参阅NSImage size not real size with some pictures?
您需要遍历NSImageRep并从找到的最大值设置大小。