MacOSでも@2xのついたファイルのscaleが2.0になってしまう件
Posted on 2012年4月2日(月) 22:12
MacOSX(Lion)上で、NSImage – initWithContentsOfFileで画像ファイルを読み込んだ時、ファイル名に@2xがついているとNSImage.sizeの大きさが半分になっていることがある怪現象に遭遇しました。
ルールはわかりませんが、@2xがついていても半分にならないときもあり、すごい謎。
iOSで使うUIImageならば、@2xが付いているとRetina用画像ということで解像度倍なのですが、MacOSにはRetinaという概念はないはずなので@2xというファイル名で何かが変わるのは変だと思うのですが・・・。
なお、下記のようなコードでCGImageからサイズを取得すると正しいサイズが取得できます。
+ (NSSize)getImageSize:(NSImage*)image{ CGImageRef cgImage = [image CGImageForProposedRect:nil context:nil hints:nil]; NSSize imageSize; imageSize.width = CGImageGetWidth(cgImage); imageSize.height = CGImageGetHeight(cgImage); return imageSize; }
という事はつまり、UIImageで言うところのscaleが2.0になっている、という事なのでしょうが、NSImageにはscaleプロパティが無いのでわかりません。
噂のRetinaMacOSXへの布石なのか、ただのバグなのか、はたまた僕の理解不足なのかわかりませんが、とにかく謎です。
分かる方いらっしゃいましたら教えて下さい。
環境はMacOS SDK 10.7,MacOS Lionです。