ABSTRUCT
webpファイルをGIFまたはJPGに変換したい。しかも、アニメーションか静止画かを自動で確認・判別していずれかにちゃんと変換してくれると助かると思って考えた。
2023年12月の状態で、どうやらffmpegはGIFでうまく変換できず、変換はImageMagicに任せた方がいいが、アニメーションか静止画かの判別情報は大元のGoogleのlibwebpに頼らざるを得ないみたい。
つまり、ImageMagicとlibwebpの両方をインストールして、特にlibwebpは手動でPathを通して、BATを組めば、結構楽に変換できる状態になった、という報告。
→ Jump: 変換コマンド / ImageMagickのインストール / webp判別・BATコード / libwebpインストール / BATファイルDL
拡張子 webp は2011年にGoogleが提唱した画像フォーマットで、実際透過もできるし、静止画もアニメーションもできるし、どうやら表示のスピードもいい様子で、GIFがCompuServeから提唱されたとき以来のなかなか画期的フォーマットではあるのですが、デフォルトではダブルクリックでブラウザ表示になってしまうし、保存に結果的にまだなかなか向かない状態が続いています。
しかも、私はPaint Shop Proを使っているのですが、なんと2023のバージョンからWebPを一括処理の仕様から正式に外すことにしたと話があって驚いたりしてます。
PSP2021では(2022は持っていない)一括処理でWebPが選択できたのに、PSP2023では選択できない。PSP2023でも、ファイルをドロップすると表示はできる(できないファイルもある)。
で、変換させるいいソフトはないだろうかと検索すると、なんだか適当に購入することになるか、面倒な広告が出るはめになるかというノリのものばかり。Web上で変換するものは例えば1日10ファイルとか、データ量の上限があるし、GIFは場合によってはうまく変換されてなかったりする。
ん~、、、と考えを巡らせてみたとこ、ffmpegまたはimagemagickを使ってみるというところにいき、調べたところ、WebPのアニメーションに対してはffmpegは対応しきれていないらしい、ということで、ImageMagickを使ったら、まず、これはなかなか便利でした。
コマンドラインで使います。
コンバートさせるのに、いくつか方法があるようですが、
GIFへの変換:
magick mogrify -format gif *.webp
JPGへの変換:
magick mogrify -format jpg -quality 87 *.webp
あたりで
そのフォーマットに変換され、拡張子が変わって保存されます。
ワイルドカード(*)でいけちゃいます。もちろん、ファイル名をちゃんと打ってもOKです。
JPGの方の 「-quality 87」の87は、圧縮率(?)です。100までで数字が大きいほど圧縮は少なく画質が高くなります。
静止画の場合、qualityオプションの部分を外して、例えば jpg のところを png にすればPNGに変換されます。
ImageMagickのインストール
インストーラをDLして、インストールする。スタートメニューに一応メニューは入ってくる。
ダウンロード
https://imagemagick.org/script/download.php
ここで、Windows Binary Releaseをみて、ImageMagick-***dll.exe をDL。
(Macの話はここではしませんが、Mac用もありますし、Linux用もあります。)
DLしたファイルを実行させる。
Pathを通しておくように設定するか?って聞いてくるところがあるので、通しておく。(普通にそのままインストールを進めればよい。)
適当なフォルダにWebPファイルを集め、コマンドプロンプトを立ち上げ、そのフォルダをカレントにした状態で、上のコマンドを打てば変換され、そのフォルダに保存されます。
しかし、ファイル名だけではアニメーションか静止画かわからない・・・
静止画かアニメか確認して、分けてからやらないとならないのはちょっと面倒。
WebPファイルが静止画かアニメーションファイルか判別
これが、ImageMagicだとどっかのバージョンで、出力内容が変わったのか、現行のバージョンではどうもうまくいかない。
ちょっとだけあれこれやったけれど、どうも釈然と判別できない。
で、libwebp。(→ libwebpのインストール)
Googleが公開している webpのためのライブラリ。
これの webpinfo を使ったら、すぐできました。
webpinfo [webpファイル名]
と、libwebpをインストールして使ってみると、やたら情報が出てきます。でも、アニメーションファイルだと、”ANIM”という文字が出てきますが、静止画だと出てこないことがわかりました。
ということで、BATファイル、作ってみました。
for %%f in (*.webp) do (
webpinfo "%%f" | find "ANIM" >nul && (
magick mogrify -format gif %%f
) || (
convert %%f -quality 87 %%~nf.jpg
)
)
ここでは、JPGを作るのに、convertコマンドを使っています。
convert ってなんだよ?って思われるかもしれません。
ImageMagickをインストールすると使えるコマンドです。(magick mogrifyとの違いはわかりません。)
インストールフォルダ(通常は、C:\Program Files\ImageMagick-***-HDRI)を見ると、結構あれこれexeファイルがあります。
libwebpで、gifやjpgに変換すればいいんじゃないか?ってやっぱ思いますよね。
jpgはできたんですが、アニメーションGIFへの変換はできなかったです。
当たり前ですが逆のアニメーションGIFからアニメーションWEBPはできるんですけど。
libwebpのインストール
ダウンロードするZIPに実行形式ファイル(exe)が入っていて、解凍して直接それをコマンドとして使う形。
ダウンロード
https://storage.googleapis.com/downloads.webmproject.org/releases/webp/
↑にアクセスして、
libwebp-***-windows-x64.zip
という最後に「windows-x64」が付いているzipファイルをダウンロードする。
(新しいバージョンは数字が大きくなるので、下の方にあるはず。もちろん、Mac用とかLinux用とか適宜対応してください。)
ZIPファイルを解凍
解凍のとき、フォルダを適当な名前(zipファイル名など。ここではlibwebpとだけにしておきます。)のを作ってその中に解凍した方がいい。
その新しくできたフォルダを適当なフォルダに移動させる。
(ここでは、C:\binに移動させることにします。つまり C:\bin\libwebp になる。)
Pathを通す
Pathを通しておかないと、スコープが変わってしまうたびに困ってしまうことになります。
コマンドを絶対パス(今回の場合でいえば、ただ、webinfo ってだけ書けば済むところが、c:\bin\libwebp\bin\webpinfo と書くということ)で全部書けば済みますが、自分でコマンドを打ちたくなったとき、厄介になってしまうので、Pathを通しておいた方が便利。
通しておくPathは、この場合 C:\bin\libwebp\bin と、最後がbinになる。( \は 半角¥のこと。)
Pathの通し方:
デスクトップ画面左下のスタートボタンを右クリックするか、「Windowsキー+Xキー」を同時に押してメニューを開きます。
「システム」をクリックして「システム情報」を表示し、「システムの詳細設定」を選択します。
(以下、Windows11の場合を想定。違う場合は似た個所を探してください。例えば、コントロールパネルの「システム」から行くとか。)
「詳細設定」タブの右下にある「環境変数」ボタンをクリックします。
「ユーザー環境変数」または「システム環境変数」の一覧から「Path」を選択し、「編集」ボタンをクリックします。
新しいパスを追加するには「新規」ボタンをクリックし、パスを入力します。フルパスを指定したい場合は「参照」ボタンを使用します。
入力出来たら、OKを押していき、すべて閉じます。
PCを再起動させれば、Pathは通っていると思います。
カレントフォルダにあるwebpファイルすべてを、アニメーションならgifに、静止画ならjpgに変換し、変換後にwebpファイルを削除するBATファイル:
UTF-8(Windows11 23H2以降はどうやらこっち)
Shift-JIS(Windows11 23H2より前のWindowsはこっち)
どっちを選んでも動きます。ただ、合ってないと画面上、文字化けするかも。
BATファイルもPathが通っているフォルダにいれるか、Pathを通すか、カレントに入れるかしないと動かないです。
このファイルの手っ取り早い使い方
手っ取り早いかどうかわかりませんが。
- Cドライブにwebpというフォルダを作り(これが C:¥webp となる)、変換させたいwebpファイルを入れます。
- libwebpのZIPファイルをDLし、C:¥webpフォルダにDLしたlibwebpのZIPファイルを移動させ、フォルダを新たに作らずに展開する。
- ImageMagicを普通にインストールする。
- 上のUTF-8かShift-JISのいずれかのZIPファイルをDLし、C:¥webpに移動させて、やはりフォルダを作らずに解凍します。(webp2.bat というファイルができます。)
- スタートを右クリックして、「ファイル名を指定して実行」で出てきた枠に「cmd」と打ち込みます。
- 出てきた黒い画面で、
C: [Enter]
cd¥[Enter]
cd webp[Enter]
set %path%C:¥webp¥bin[Enter]
と打ち込みます。([Enter]は、Enterキーを押すという意味。[Enter]と打ってもうまく進みません。また、¥と\は同じです。上の「cd webp[Enter]」のあと、C:\webp> と表示されていなかったら、上の1がここで言ったとおりにできていないことになるので、うまくいきません。)
そのあと、
webp2[Enter]
と打てば、動作するはずです。
動作すれば、C:¥webpフォルダに入れておいたwebpファイルの名前が1つずつ表示され、その後ろに静止画であれば Static、アニメーションであれば Animation と表示され、変換されていきます。
全ての変換が終わると、削除しますがいいですか?と聞いてくるので、[Enter]を押してください。
本当にいいですか?と再度聞いてくるので、webpファイルを削除したくなければ、CTRL+Cを押して、「y」を押してBAT処理を中断させて強制終了させてください。削除したければ、[Enter]で削除されます。
コマンドプロンプトの画面を閉じなければ、webpフォルダにwebpファイルを追加したら、再度 webp2 と打つだけで変換します(前のwebpを削除していないとそれも再度変換します。上書きされます)。閉じたら5からやり直し。1~4は1度やればOKです。libwebpとwebp2.batがある場所のPathを通してしまえば、「set %path%C:¥webp¥bin[Enter]」の1行が不要になりますし、カレントの意味がわかれば、スコープを変えれば、いつでも webp2 と打つだけで変換できるようになります。