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

Android手機能有支援RAW檔的相機就該偷笑了,大部分相機輸出的不外乎是JPEG或PNG。隨著解像度越來越高,檔案大概都4MB起跳。

為何不在拍照的時候就儲存成AVIF/HEIC/HEIF等高效率格式呢?或許未來會支援吧,AVIF比HEIC更新更有吸引力。

在那之前,我們可以先用Termux的相機功能玩一下,在拍照成JPEG後直接轉成近乎無損的AVIF。

這是主角北上,用Sony內建相機拍的。

安裝Termux,安裝Termux API。安裝termux-api和Image Magick套件:

1
2
pkg update
pkg install termux-api imagemagick

使用termux-camera-info指令查看相機訊息。應該會印出一串JSON,並標記手機上的鏡頭ID,例如我有1個前鏡頭+3個後鏡頭,對應ID 0~4。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[
  {
    "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刪除。

1
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


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

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

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。