NSImageのサイズを取得する方法
NSImageからサイズを取得する方法は色々有りますが、その中で、『正しいピクセル数』を取得するにはどうすればいいのでしょうか? 特に、画像ファイルを読み込んだ場合。
動作を確認した環境
環境 | 情報 |
---|---|
OS X | 10.9.2 |
Xcode | 5.1 |
Date | 2014/03/31 |
実験
実験内容
NSImageからサイズを取得する方法はこんな感じ。
- NSImageのsize
- NSImageからNSImageRepを取得してsize
- NSImageからNSImageRepを取得してpixelsWideとpixelsHigh
実験に使用した画像ファイルがこちら。
結果
それぞれの方法で、サイズを調べた結果がこちら
方法 | サイズ |
---|---|
1. NSImageのsize | 148x148 |
2. NSImageRepのsize | 148x148 |
3. NSImageRepのpixelsWideとpixelsHigh | 1024x1024 |
考察
どうして、3だけ別の値が帰ってきているのか? これは、sizeで取得される値は元々の画像ファイルに指定されてたDPIの値が反映されているためです。
通常、DPIの指定がない画像ファイルはピクセル数=画像サイズになります。この場合、DPIは72DPIとみなされます。たぶん。今回実験に使用した画像では、497DPIに指定されていました。
結果的に、画像サイズが148x148になっていた、と。pixelsWideとpixelsHighは元々のピクセル数をそのまま返すため、1024x1024になっています。
結論
DPIを考慮したサイズが知りたい場合は、NSImageのsizeを使用。元々のピクセル数が知りたい場合はNSImageRepのpixelsWideとpixelsHigh。
DPIを考慮したサイズを知りたい場合がどれだけあるのか疑問ですが・・・
備考
参考資料
My First iMac: 画像サイズの取得: NSImageのサイズがおかしい
http://myfirstimac.blogspot.com/2007/02/nsimage.html