Swiftで画像サイズがうまく取れなかった件
縦横サイズが同じpng画像を読み込んで縦横サイズを取得しているのですが、画像によって返ってくる値が異なっていました。
let path = "/Users/ug/Desktop/image.png" let image = NSImage(contentsOfFile: path) let imageWidth = image.size.width let imageHeight = image.size.height
23 × 320画像を読み込んでいますが、
別に用意した同じサイズの画像だと、5.51999...×76.79....というサイズで返ってきます。
NSUrlにしてから読み込んでみたり、
NSDateにしてから読み込んでみたり、
NSBitmapImageRepにしてから読み込んだり、
Objective-cを経由して読み込んでみたりしても同じでした。
ここ数日すっかり困っていたのですが、解像度が違う画像を読む場合、sizeを使って取得すると、72dpiに変換されて返ってくるという情報を得て、画像情報を見たら、正常に返ってくる画像は72dpi、正常に返ってこない画像は、300dpiでした。
Google先生の検索が甘かったようです。
画像サイズ取得の場合は、sizeではなく、NSImage→NSBitmapImageRep→pixelsWide/pixelsHeighで取得する
let path = "/Users/ug/Desktop/image.png" let image = NSImage(contentsOfFile: path) let bmpir = NSBitmapImageRep(data:image!.TIFFRepresentation!) let imageWidth = image.pixelsWide let imageHeight = image.pixelsHeigh
これでちゃんと返ってくるようになりました。
当たり前のことなのかもしれませんが、久しぶりにはまったので防備録として残しておきます。
助かりました。
参考)画像サイズの取得: NSImageのサイズがおかしい