Index > PNGをGIFやJPEGに変換したい
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  
 Twitter
follow me on Twitter
 Categories