うるおいらんど

【Swift】AVFoundationを用いたカメラ撮影で取得できる画像サイズについて【メモ】

AVFoundationSwift

追記があります。

ちょこっとメモ書きです。

AVFoundationを用いたカメラ撮影をして、取得した画像を画面いっぱいに表示してみると、なんでか画像がキュッと縦に引き伸ばした画像になってしまいます。

 

iPhone7での検証ですが、よくよく考えてみるとデフォルトのカメラも上下に黒い帯が入っているので画面サイズぴったりの写真を撮っているわけじゃないんですね。

AVFoundationを用いた撮影方法のコードは今回は割愛しますが、とりあえず撮影される写真サイズの話だけをしますね。

AVCaptureSession の sessionPreset

AVCaptureSessionのsessionPresetってやつが画像のクオリティ設定になります。

設定の種類は「Video Input Presets」に書かれている通りです。

デフォルトでは「AVCaptureSessionPresetHigh」が指定されています。

 

今回、「AVCaptureSessionPresetPhoto」を指定していたのですが、画像取得して画面いっぱいに表示してみると(16:9)縦長の画像になっていました。

 

コンソールで見てみると、

 

AVCaptureSessionPresetPhoto を指定した時 3024 : 4032

AVCaptureSessionPresetHigh      を指定した時 1080 : 1920

 

の画像を取得していました。(iPhone7)

 

つまり、

AVCaptureSessionPresetPhoto を指定した時の比率 3:4

AVCaptureSessionPresetHigh      を指定した時の比率 9:16

の画像を取得しているんですね。

 

ちなみにiPhone4Sでも動かして見たところ

AVCaptureSessionPresetPhoto を指定した時 2448 : 3264

AVCaptureSessionPresetHigh      を指定した時 1080 : 1920

AVCaptureSessionPresetPhoto を指定した時の比率 3:4

AVCaptureSessionPresetHigh      を指定した時の比率 9:16

という結果になりました。

iPhone4Sは画面の比率が2:3なので、画面いっぱいに表示しようと思うとHighを指定した時の9:16には当てはまらなくなります。

 

4Sに対応するかどうか、データサイズ等も含めてちょっと考えなきゃいけないかなぁと思います。

 

メモ書きですが何かの参考になればと思います。それではでは

 

 

AVFoundationを用いた撮影方法は下記の記事を参考にさせていただいてます。

[Swift2] カメラで静止画を撮影 (AVFoundation)

Additional Notes追記

iOS11の現在、AVFoundation周りはdeprecatedになってるものが色々あってちょっと色々困っちゃいますね。

ちなみにSwift3で

AVCaptureSessionPresetPhoto

と書いていたところは、Swift4では

.photo

という書き方になります。

Comments

コメントはありません。

現在コメントフォームは工事中です。