1

我想我在这里遗漏了一些非常基本的东西。如果我使用我知道存在的合法 URL/路径执行此操作:

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

4

3 回答 3

9

size方法返回一个NSSize,一个结构体,其widthheight成员的类型为float。您将它们视为int. 使用%f,一切都应该没问题。

于 2010-09-17T21:39:20.153 回答
3

这有帮助吗?

setSize:

设置图像的宽度和高度。

- (void)setSize:(NSSize)aSize

讨论:

NSImage 对象的大小必须在使用前设置。如果在添加图像表示时尚未设置图像的大小,则从图像表示的数据中获取大小。对于 EPS 图像,大小取自图像的边界框。对于 TIFF 图像,大小取自 ImageLength 和 ImageWidth 属性。

在使用 NSImage 后更改它的大小可以有效地调整图像的大小。更改大小会使其所有缓存无效并释放它们。下一次合成图像时,选定的表示将在屏幕外窗口中自行绘制以重新创建缓存。

可用性 适用于 Mac OS X v10.0 及更高版本。也可以看看

于 2010-09-17T21:36:06.383 回答
1

看到一些图片的 NSImage 尺寸不是真实尺寸?

您需要遍历 NSImageRep 并从找到的最大设置大小。

于 2012-06-27T00:16:07.173 回答