1. ホーム
  2. android

[解決済み] Androidにおけるカメラの向きの問題

2022-11-28 12:30:59

質問

カメラを使って写真を撮るアプリケーションを作っています。以下はそのためのソースコードです。

        File file = new File(Environment.getExternalStorageDirectory(),
            imageFileName);
    imageFilePath = file.getPath();
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    //Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
    startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE);

について onActivityResult() メソッドで、私は BitmapFactory.decodeStream() を使って画像をピックアップしています。

Nexus oneでアプリケーションを実行すると、うまく動きます。しかし、Samsung Galaxy SやHTC Inspire 4Gで実行すると、画像の方向が正しくありません。

  • ポートレート モードでキャプチャすると、実際の画像 (SD カードに保存) は常に 90 度回転します。

撮影後の画像プレビュー --------- SDカード上の実画像

  • ランドスケープモードでキャプチャ、万全です。

撮影後の画像プレビュー --------- SDカード上の実画像

どのように解決するのですか?

このあたりには、かなり多くの類似のトピックや問題があります。自分でカメラを書くわけではないので、これに尽きると思います。

デバイスによっては、保存する前に画像を回転させるものもあれば、単に写真の exif データに方向タグを追加するものもあります。

写真の exif データを確認し、特に以下を探すことをお勧めします。

ExifInterface exif = new ExifInterface(SourceFileName);     //Since API Level 5
String exifOrientation = exif.getAttribute(ExifInterface.TAG_ORIENTATION);

あなたのアプリでは写真が正しく表示されているので、どこに問題があるのか分かりませんが、これで間違いなく正しい道に進めるはずです!