メインコンテンツへスキップ

AndroidスマホでAVIF/HEIF写真を撮る、Termux-cameraを利用

·
カテゴリー スマートフォン Termuxチュートリアル
タグ AOMedia Video 1

AndroidスマホでRAWファイル対応のカメラがあるだけでもありがたいものです。大半のカメラが出力するのは、せいぜいJPEGかPNGです。解像度が高くなるにつれて、ファイルサイズはだいたい4MBからになります。

なぜ撮影時にAVIF/HEIC/HEIFなどの高効率フォーマットで保存できないのでしょうか。将来的には対応するかもしれませんが、AVIFはHEICより新しく、より魅力的です。

それまでは、Termuxのカメラ機能で少し遊んでみましょう。JPEGで撮影したあと、その場でほぼロスレスのAVIFに変換します。

これは主役の北上を、Sony標準カメラで撮ったものです。

Termuxをインストールし、Termux APIもインストールします。続いてtermux-apiとImage Magickパッケージをインストールします。

pkg update
pkg install termux-api imagemagick

termux-camera-infoコマンドを使ってカメラ情報を確認します。JSONが出力され、スマホ上のレンズIDが示されるはずです。たとえば私の端末には前面カメラ1個 + 背面カメラ3個があり、ID 0〜4に対応しています。

[
  {
    "id": "0",
    "facing": "back",
    "jpeg_output_sizes": [
      {
        "width": 4032,
        "height": 3024
      },
    ],
    "focal_lengths": [
      5.110000133514404
    ]
  },
  {
    "id": "1",
    "facing": "front",
    "jpeg_output_sizes": [
      {
        "width": 3264,
        "height": 2448
      },

    ],
    "focal_lengths": [
      2.4700000286102295
    ]
  },
  {
    "id": "2",
    "facing": "back",
    "jpeg_output_sizes": [
      {
        "width": 4032,
        "height": 3024
      }
    ],
    "focal_lengths": [
      5.110000133514404
    ]
  },
  {
    "id": "3",
    "facing": "back",
    "jpeg_output_sizes": [
      {
        "width": 4288,
        "height": 3216
      }
    ],
    "focal_lengths": [
      6.949999809265137
    ]
  },
  {
    "id": "4",
    "facing": "back",
    "jpeg_output_sizes": [
      {
        "width": 4032,
        "height": 3024
      },
    ],
    "focal_lengths": [
      2.6700000762939453
    ]
  }
]

TermuxにはGUIがないのに、どうやって写真を撮るのか。ポーズを決めて勘で撮るしかありません。レンズごとのだいたいの写りを見たい場合は、OpenCameraをダウンロードしてレンズを切り替えれば確認できます。

次は撮影コマンドです。Termuxがカメラ(-cの後ろにレンズIDを指定)を呼び出してjpeg形式の写真を出力します。他に調整できるオプションはありません。そのファイルをImage Magickに渡してAVIFへ変換します。最後のコマンドはjpegを削除します。

termux-camera-photo -c 0 temp.jpeg && magick convert temp.jpeg -quality 90 out.avif && rm temp.jpeg

撮影時にはレンズの作動音が聞こえることがあり、Android 12ではカメラへのアクセス表示も出ます。変換には約10秒かかります。

撮影後、Termuxのホームディレクトリからファイルを取り出すと、JPEG(左)をAVIF(右)へ変換した後、容量が半分以下になっていることがわかります。(注:私のスマホではAVIFのカラーマッピングが少しおかしく、Linuxパソコンで見ると正確に表示されます)

3番の広角レンズで試してみると、また違った味わいがあります。

もちろん、Appleが使っているHEICへ変換することもできます。ただし、その場合は逆にファイルサイズが大きくなりますXD。

こんなに面倒なら、普通に写真を撮ってからまとめて変換すればいいのでは?その通りです。画像・動画をAVIF / AVIFSへコマンドラインで変換する方法を見てください。

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。