AVCaptureDeviceサンプルバッファーデリゲートからQRファインダーマークを見つけるアプリがあります。今、QRマークをカバーするために画面にボックスを配置しようとしています。ただし、1280x720ピクセルの解像度とcameraViewサイズの間の変換に問題があります。
これらのパラメーター(およびビューの座標系が逆さまになっているという事実)に基づいてCGRectを変換するメソッドを作成しようとしていますが、機能しません。カメラデバイスの向きにも関係があるかもしれません。変換メソッドのコードは次のとおりです。
-(CGRect) convertRect:(CGRect) oldRect From90DegreeRotatedCameraSize1280x720ToUIViewSize:(CGSize) viewSize
{
//remember that we are using a gravity of resize aspect fill
double xScale = viewSize.width / 720;
double yScale = viewSize.height / 1280;
if (xScale < yScale)
return CGRectMake(oldRect.origin.x * xScale, viewSize.height - oldRect.origin.y * xScale, oldRect.size.height * xScale, oldRect.size.width * xScale);
else
return CGRectMake(oldRect.origin.x * yScale, viewSize.height - oldRect.origin.y * yScale, oldRect.size.height * yScale, oldRect.size.width * yScale);
}
この比較的単純な空間座標の問題を解決するためのエレガントなソリューションを手に入れた人はいますか?
編集 -
接続ビデオの向きのNSLogを実行しましたが、1から変更されることはありません(これは縦向きに列挙されていると思います)。これから、座標が変更されないため、解決策を見つけるのが簡単になるはずです。異なる方向。
何かアイデア、コーダーコミュニティ?