【发布时间】:2013-09-26 12:39:21
【问题描述】:
我在 Mac OSX 上有以下代码来加载图像:
NSImage *baseImage = [NSImage imageNamed:[NSString stringWithCString:file.getFilename().c_str() encoding:NSUTF8StringEncoding]];
在 iOS 上使用以下代码加载图片:
UIImage* baseImage = [UIImage imageNamed:[NSString stringWithCString:file.getFilename().c_str() encoding:NSUTF8StringEncoding]];
图片加载后两个平台上的以下行:
printf("Surface: \"%s\" size: %d, %d\n", file.getFilename().c_str(), (int)[baseImage size].width, (int)[baseImage size].height);
如果有问题的图像是 72 DPI,那么在两个平台上,我都会得到以下输出:
Surface: "player.png" size: 30, 30 (Mac)
Surface: "player.png" size: 30, 30 (iOS)
但是,如果图像是 96 DPI,那么我会得到不同的结果:
Surface: "player.png" size: 30, 30 (Mac)
Surface: "player.png" size: 40, 40 (iOS)
虽然 Mac 缩放图像以匹配 72 DPI 而 iOS 不缩放它是一种奇怪的行为,但我希望跨平台获得一致的结果。 (最好缩小到 72 DPI。)
tl;dr:在 iOS 上,如何检测图像的 DPI 并进行相应的缩放?
【问题讨论】:
标签: ios macos uiimage dpi nsimage