NSImage大小错误

时间:2010-09-17 21:29:07

标签: objective-c cocoa nsimage nsimagerep

我想我错过了一些非常基本的东西。如果我使用我知道存在的合法网址/路径执行此操作:

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,我也尝试检查第一个表示的大小,它返回相同的混乱值。为什么图像加载不正确?

3 个答案:

答案 0 :(得分:9)

size方法返回NSSizewidthheight成员类型为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并从找到的最大值设置大小。