快轉到主要內容

Android手機拍攝AVIF/HEIF相片,利用Termux-camera

智慧型手機 Termux教學 AOMedia Video 1
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字

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要怎麼拍照?就擺好pose靠感覺囉。如果想看該鏡頭的大約成像狀況,下載 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號廣角鏡頭試試也別有一番風味。

當然,要將檔案轉成蘋果在用的HEIC也是可以的,但這樣檔案反而會變大XD。

這麼麻煩,幹嘛不正常拍完照再大量轉換呢?很好,請看 如何將圖片影片轉檔成AVIF / AVIFS

相關文章

Android手機免root跑Docker,安裝Linux QEMU虛擬機
智慧型手機 Termux教學 QEMU Docker Alpine Linux Android
用Python寫一個Termux圖形程式
智慧型手機 Termux教學
手機檔案管理器如何存取Termux的內部目錄
智慧型手機 Termux教學

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。