プログラミング

WebPファイルをjpg/pngファイルに変換するには

webpファイルはモダンなウェブ技術の一つで、Googleが近年開発したコンパクトで容量を抑えた、ウェブサービスに優しいファイルフォーマットであるとされています。
サイト管理者からすれば便利かもしれませんが、一般的にはまだまだ対応が完全ではありません。例えばあるサイトにアップロードできるサイトはjpg/pngフォーマットのみであり、webpフォーマットをそのままアップロードすることはできない、といったことです。

webpファイルをjpg/pngファイルに変換するには、以下の2つの方法があります。

ffmpegで変換

ffmpegはだいたいどんな人でもインストールされてると思います。
以下のようにwebpファイルをjpgファイルへ変換します。

ffmpeg -i file.webp out.jpg

インストールがまだの場合はインストールしましょう

sudo apt update ; sudo apt install ffmpeg -y

WSL環境やLinux環境がなくWindows上にインストールしたい場合はchocoを使うといいですね
chocolateyのインストールと使い方については他の記事にて紹介しています。当ブログの検索機能を利用してください。

choco install ffmpeg

dwebpで変換

webpパッケージに入っているdwebpコマンドを利用してwebp変換をする方法です。

webpをインストール

sudo apt update ; sudo apt install webp -y

以下のように使用して変換をしましょう

dwebp file.webp -o abc.png

余談ですが”dwebp”の”d”は”decompress”です。

なお、ffmpegでの変換はjpgファイルには良いけど、pngには出力ファイルが大きくなるという不具合があるようです。png変換の場合にはdwebpを使うほうが良いでしょう。

It is good for jpg image, but png format is very large

(参考)

imagemagick – convert webp to jpg error: “no decode delegate for this image format” and “missing an image filename” – Unix & Linux Stack Exchange

フォルダの全てのwebpファイルをjpgに変換する

以下、応用の使用例です。
以下スクリプトで、フォルダの全てのwebpファイルをjpgに変換しましょう。

for i in *.webp; do ffmpeg -y -i "$i" "$(basename "${i%.*}").jpg"; done;

フォルダにwebpファイルが追加されたら即時jpgに変換する

応用の使用例です。

シンプルな、フォルダにwebpファイルが追加されたら即時jpgに変換してwebpファイルを削除する、というスクリプトを書きました。便利なので使ってどうぞ。

以下スクリプトをtmp.shに保存します

for i in *.webp; do ffmpeg -y -i "$i" "$(basename "${i%.*}").jpg"; done; rm *.webp

nodemonを使いフォルダに変更があった場合にそれを検知し、tmp.shのスクリプトを適時実行します

nodemon -e webp --exec ./tmp.sh

nodemonのインストールがまだの場合はインストールしましょう
nvmを使用してのnode.jsおよびnpmのインストールについては他の記事にて紹介しています。当ブログの検索機能を利用してください。

npm i -g nodemon