此为历史版本和 IPFS 入口查阅区,回到作品页
Ivon Huang
IPFS 指纹 这是什么

作品指纹

(偽)Android手機拍攝AVIF/HEIF相片

Ivon Huang
·
·

Android手機內建大部分相機輸出的不外乎是JPEG或PNG,有些提供RAW檔案。隨著解像度越來越高,檔案大概都4MB起跳。

從容量來看,為何不在拍照的時候就儲存成AVIF/HEIC/HEIF等檔案更小、更高效率的格式呢?或許未來會支援吧,AVIF比HEIC更新更有吸引力,因為不用摳摳。

Android 12已支援顯示AVIF,iOS要到iOS 16才會加入。

在那之前,我們可以先用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。

但... 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

拍照之後,從Termux的家目錄把檔案取出來,JPEG(左)轉成AVIF(右)後體積減少了一半多。(註:我的手機AVIF顏色映射怪怪的,要放到Linux電腦上看才會準)

改用3號廣角鏡頭試試也別有一番風味。

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

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

CC BY-NC-ND 2.0 授权