ちょこっとメモ書きです。
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を用いた撮影方法は下記の記事を参考にさせていただいてます。
Additional Notes追記
iOS11の現在、AVFoundation周りはdeprecatedになってるものが色々あってちょっと色々困っちゃいますね。
ちなみにSwift3で
AVCaptureSessionPresetPhoto
と書いていたところは、Swift4では
.photo
という書き方になります。
コメントはありません。
現在コメントフォームは工事中です。