Sun, April 16, 2006
PNGをGIFやJPEGに変換したい
通常の用途では、ウェブでイメージを扱うときは、PNG形式でほとんど間に合うのだが、 時々、GIFに変換する必要が生じることがある。 どうすればいいのか。
netpbmを使う
ネットで調べたところどうやら、netpbmを使えば変換できそうです。
netpbmのインストール
Vine3.2の場合ですが、apt でインストールできる。
# apt-get install netpbm
PNG から GIF への変換
netpbmでは、 ダイレクトにPNGからGIFへ変換するのではなく、 netpbmの標準形式に変換してから再度目的の形式(ここではGIF)へ変換するという 二段階で処理します。
具体的には、 pngtopnm コマンドで、いったん pnm 形式に変換した後 ppmtogif で GIF形式へ変換することになる。
foo.png ファイルがあった場合、
STEP1
$ cat foo.png | pngtopnm > foo.pnm
STEP2
$ cat foo.pnm | ppmtogif > foo.gif
で変換できる。
pngtogif コマンドの作成
二度変換は面倒なので、一度に変換できるようにスクリプトを書いておきます。
操作イメージとしては、
以下のような形で使えるようにします。
$ pngtogif foo.png > foo.gif
pngtogifコマンド
#!/bin/bash
if [ ! -z "$1" ]; then
if [ -z "$2" ]; then
pngtopnm $1 | ppmtogif > ${1%.*}.gif
else
pngtopnm $1 | ppmtogif > $2
fi
fi
PNG から JPEGへの変換
GIFと同じ要領でコマンドを作成しておきます。
#!/bin/bash
if [ ! -z "$1" ]; then
if [ -z "$2" ]; then
pngtopnm $1 | ppmtojpeg > ${1%.*}.jpg
else
pngtopnm $1 | ppmtojpeg > $2
fi
fi