カメラのプレビュー内に矩形が の上にオーバーレイされたカスタムAndroidカメラのアクティビティを作成しています(ボタンを押した ボタンで)最終画像の対応する矩形領域 。問題は、アンドロイド が最終画像にプレビュー画面をマップする方法をまだ理解していないことです。Androidカメラのプレビューから最終的な画像へのマッピング
我々は、以下の式を試みたが、唯一のいくつかのケースで動作している:
は、xとyはカメラプレビューに示す として矩形の左上隅の座標とします。
preview_widthとpreview_heightをカメラの幅と高さにします。 プレビューこれらは、getBestPreviewSize()関数を使用して取得します。この関数は、サポートされているプレビューサイズで をループし、より大きなものを選択します。 それらが1280と720であるとしましょう。
picture_widthとpicture_heightをカメラでサポートされている最終 画像の幅と高さとしましょう。私たちの目的のために、これが1632 * 1224(これは2 MPに対応するSony Ericsson XPERIA上で)とします。
最後の画像 のクロップ矩形のxとyであるx_map、y_mapを検索します。類似の規則によってそして
は、我々が使用される式は次の通りであった:
x_map = picture_width * X/preview_width。 y_map = picture_height * y/preview_height;
ただし、これはすべての場合に機能するとは限りません。 の電話機の画面のサイズがプレビューのサイズと似ている場合、この の式がほぼ機能していることがわかりました(おおよその誤差は小さい)。
ただし、画面サイズが幅:480 と高さ:854のSony XPERIA電話機の場合は、数式が失敗します。 * 1280分の50 X = 50、次いでx_map = 1632については、例えば
、= 63.75 しかし矩形領域で示すように、この数は、最終 ピクチャから切り取ら、実際に矩形に対応していませんプレビューエリア。それは です。私たちの公式では、画面の寸法、 を考慮していませんが、それを考慮して実験を修正しても、 は望ましい結果を生み出していません。
我々はそれにと幅広く上 答えを探して後にはドキュメントが存在しないので、プレビューサイズと、最終的な絵何とか との間のマッピングは、アカウントに、画面の大きさを取るが、正確にどのように考え出したていない、 と思われます関連するものは何もなかった。私たちは、 のスケールファクタとアスペクト比があると考えています。これは、公式ルールを適用する前に、 を考慮に入れる必要があります。
あなたは上記の正しい式を知っていますか?