UIImagePicker でカメラロールから読み込んだ画像のサイズで少しはまったのでメモしておきます。twitter でつぶやいた@AppleWalker さんにアドバイス頂きました。ありがとうございます。

カメラロールから取得した UIImage だと縦長の写真も、サイズを見ると横長になっています。
サイズは下記のようにして調べました。

CGImageRef imageRef = [image CGImage];
size_t w = CGImageGetWidth(imageRef);
size_t h = CGImageGetHeight(imageRef);

写真の向きを調べるには以下のようにします。

size_t w,h;
if (image.imageOrientation==UIImageOrientationUp ||
    image.imageOrientation==UIImageOrientationDown) {
    // 横位置
    size_t w = CGImageGetWidth(imageRef);
    size_t h = CGImageGetHeight(imageRef);
} else {
    // 縦位置
    size_t w = CGImageGetHeight(imageRef);
    size_t h = CGImageGetWidth(imageRef);
}

※UIImageOrientationUpMirrored or UIImageOrientationDownMirrored とかも比較すべきかもしれません。

iPhone に保存されているデータとしては、縦位置で撮っても横位置で撮ってもデータとしては縦と横のサイズは変わらないということですね。

関連する投稿