イメージをロードするために、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 を検出し、それに応じてスケーリングするにはどうすればよいですか?