7

レイアウトの特性 (主に縦横比) に基づいてプレビュー サイズを選択し、他の制約 (最小寸法) に基づいて画像サイズを選択するカメラ アプリがあります。これにより、多くの場合、プレビューとは異なる縦横比の画像が作成されます。

これ自体は問題ではありませんが、写真が撮影されたときにプレビューに表示されていた最終写真の同じ領域を抽出できるように、プレビューの長方形を写真の同等の長方形にマッピングする必要があります。

縦横比が異なるということは、長方形の一部が重ならないことを意味することを理解していますが、これが問題になるほどエッジの近くで作業していません。

プレビューと写真が直接どのようにマッピングされるかを知ることができない場合、それらがそれぞれネイティブ カメラにどのようにマッピングされるかを判断する方法はありますか? ネイティブ カメラの縦横比をプログラムで検出できれば、クロッピング スキームを特定できる可能性があります。

4

2 に答える 2

14

さらに試行錯誤を繰り返した結果、次の暫定的な結論を下しました。

  1. によって提供される最大のイメージ サイズCamera.Parameters.getSupportedPictureSizesは、カメラのネイティブ解像度を表します。

  2. で説明されているように拡大すると、他の画像サイズのコンテンツや で提供されるプレビュー サイズがCamera.Parameters.getSupportedPreviewSizesネイティブ コンテンツと一致しMatrix.ScaleToFit.CENTERます。(基本的に、上下または左右のいずれかがネイティブ解像度の境界に達するまで、中央からスケーリングします。縦横比が一致しない場合、ネイティブ解像度の境界に達しない次元でトリミングが発生します。

そのため、私の解決策は、最初にプレビュー選択長方形をネイティブカメラの画像サイズにスケーリングすることでした。次に、ネイティブ解像度のどの領域に必要なコンテンツが含まれているかがわかったので、同様の操作を行って、ネイティブ解像度でその四角形を実際にキャプチャされた小さな画像にスケーリングできますCamera.Parameters.setPictureSize

于 2013-08-10T06:37:55.347 に答える