« PreviousNext »

Entry

iPhoneアプリ開発進捗(2)カメラの撮影方向の判定

仕事のスケジュールの都合でiPhoneアプリ開発が滞っていましたが、久々に作業を進めることができました。それで、今回は開発進捗として、カメラの撮影方向の判定に関してまとめてみることにしました。

市販の参考書等のソースコードを見てみると、iPhoneを横に倒した状態の撮影が考慮されていないケースがあるようです。つまり、そのままのコードで実行すると縦横比がおかしい状態で撮影されてしまうという問題が発生します。

そうした問題の回避策としてまず考えられるのが、画像サイズを取得して縦横比で判断するといった方法がすぐに思い浮かぶと思います。しかしながら実際には、撮影方向にかかわらず画像サイズは一律で同じ値(つまり横1600×縦1200)を帰してくるので、その方法では問題は解決しません。

だいぶ省いてますが、...

CGImageRef image;
image = shrinkedImage.CGImage;
size_t imgW = CGImageGetWidth(image);
size_t imgH = CGImageGetHeight(image);

if(imgW < imgH){
 //縦が長いので縦撮影
} else {
 //横が長いので横撮影
}

...のような方法では撮影方向は判断できないということです。

ではどうすればいいのかというと、一例ですが下記のような方法で判断できるようです。

if(image.imageOrientation == UIImageOrientationUp || image.imageOrientation == UIImageOrientationDown) {
 //横撮影
} else {
 //縦撮影
}

switch文で分岐させることも可能かと思いますが、単に縦なのか横なのかの判定なのであれば、どちらか片方の条件と、それ以外という分岐のさせ方で問題ないかもしれません。

因みに向きのタイプは以下のようになっているようです。

UIImageOrientationUp 基本
UIImageOrientationDown 180度回転
UIImageOrientationLeft 90度左に回転
UIImageOrientationRight 90度右に回転
UIImageOrientationUpMirrored 反転
UIImageOrientationDownMirrored 反転して180度回転
UIImageOrientationLeftMirrored 反転して90度左に回転
UIImageOrientationRightMirrored 反転して90度右に回転

このように着々と開発は進んでますが、仕事のスケジュールもあり、完成・審査までにはもう少しかかりそうな感じです...。

Page Top

« PreviousNext »