2

Makefile 内から、PNG のサイズを縮小するのが好きです。

最初に ImageMagick を試してみましたが、画像のサイズを変更 (縮小) して色を 32 (または深さを 5 ビット) に減らすことはできましたが、ほとんどの場合、実際のファイル サイズは元のサイズよりも大きくなりました。

GraphicsMagick を使用した場合、結果は同様で、わずかに良くなったり、悪くなったりします。

[gm] convert input.png -trim -resize 600 -depth 5 -quality 100 output.png

Gimp を使用すると、常に完璧な結果が得られます。画像を縮小し、色を 32 に減らした後、結果の画像は常に元の画像よりもはるかに小さくなります。残念ながら、Makefile から Gimp を使用するのは少し難しく、私は Lisp を知りません。Python しか知りません。

質問: - ImageMagick または GraphicsMagick で PNG サイズを小さくする方法はありますか? - 代わりに Gimp を使用してこの変換を実行する簡単な方法はありますか? Python を使用することをお勧めします。- このタスクに役立つ他の無料ツールはありますか?

4

2 に答える 2

1

私は自分の質問に答えます。任意のMakefileローカル コピーではなく、バージョン管理システムのスクリプトを使用できるように、一時的な Gimp ディレクトリを作成して使用する必要があります。Gimp は起動が比較的遅いため、画像ファイルをバッチ処理する必要があります。

mkdir -p gimp/plug-ins
cp downsize.py gimp/plug-ins/
GIMP2_DIRECTORY=`pwd`/gimp gimp --no-interface \
    --batch '(python-fu-downsize RUN-NONINTERACTIVE 600 32 "origdir" "copydir")' \
    --batch '(gimp-quit 0)'

スクリプトdownsize.pyは通常の Gimp Python スクリプトで、主に次のようなものが含まれています。

def downsize(img_w, img_d, in_dir, out_dir):
    for fn in glob.glob(os.path.join(in_dir, "*.png")):
        img = pdb.gimp_file_load(fn, '1')
        if img.width > img_w:
            aspect = float(img.width)/float(img.height)
            h = int(float(img_w)/aspect)
            pdb.gimp_image_scale(img, img_w, h) 
            if img.base_type != RGB:
                pdb.gimp_convert_rgb(img)
            if img.base_type != INDEXED:
                pdb.gimp_convert_indexed(img, NO_DITHER, MAKE_PALETTE, img_d, False, True, "")
            new_path = os.path.join(out_dir, os.path.basename(fn))
            pdb.gimp_file_save(img, pdb.gimp_image_active_drawable(img), new_path, fn)

このコードは正しくない可能性があります。これは単なる基本的な考え方です。

于 2011-08-11T15:47:20.120 に答える
0

pngcrush を試してみてください: http://pmt.sourceforge.net/pngcrush/

于 2011-08-09T19:46:23.203 に答える