圧縮されたPNG画像がありますcompressed.png
。圧縮されていないPNGに変換できますdecompressed.png
GIMPを使用(PNGとして保存し、圧縮レベルを0に設定)。これはコマンドライン(Linux)でどのように実行できますか?
過去に Imagemagick のconvert
を使用してこれを行ったことを思い出しますが、方法を忘れました。 ドキュメント に基づいて動作するはずだと思ったいくつかのことを試しました:
convert compressed.png -compress None decompressed.png
convert compressed.png +compress decompressed.png
convert compressed.png -quality 0 decompressed.png
convert compressed.png -quality 00 decompressed.png
通常の圧縮PNGを書いただけです。
ある場合:
ImageMagickは常にPNGファイルを圧縮します。あなたが得ることができる最悪の圧縮は使用しています:
convert -verbose -quality 01 input.png output.png
ただし、画像の内容によって異なります(0は、zlibよりも圧縮率が高い場合があるハフマン圧縮を使用します)。
Pngcrush( http://pmt.sourceforge.net/pngcrush/ )のような他のツールを試して、圧縮を無効にすることができます。
pngcrush -force -m 1 -l 0 input.png output.png
これは、圧縮レベル0(多かれ少なかれ数バイト)を使用するときにGIMPが作成するのと同じサイズのファイルを作成します。
いくつかのサイズ例(写真PNGの場合、1600x1200):
ImageMagickのドキュメントを引用するには:-qualityオプションを使用して、圧縮レベル、戦略、およびPNGフィルタータイプのすべての組み合わせを取得できるわけではありません。より正確に制御するには、-defineオプションを使用できます。
たとえば、次のコマンドは非圧縮(RGB)PNGファイルを作成する必要があります。
convert INFILE \
-define png:compression-level=0 \
-define png:compression-filter=0 \
-define png:color-type=2 \
OUTFILE.png
警告が表示される場合がありますが、これは無害なバグです。それでも正しいpngが生成されます。 http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20257
サンプル画像:
112233 112233 112233 112233
445566 445566 445566 445566
778899 778899 778899 778899
aabbcc aabbcc aabbcc aabbcc
IMで作成されたPNGファイルのIDATチャンク:
49444154081d013400cbff00
11223311223311223311223300
44556644556644556644556600
77889977889977889977889900
aabbccaabbccaabbccaabbcc
7d6f14b9...
ただし、特定の場合(グループ圧縮など)では、TARGA(.tga)など、オーバーヘッドの少ない形式をテストする価値がある場合があります。
私はツールのnetpbmスイートが好きです。それはUNIXの「ソフトウェアツール」の伝統である「1つのことを実行してそれをうまく実行するプログラムを書く」で設計されています。
あなたはこのようにあなたが尋ねたことをすることができます:
< in.png pngtopnm > image.pnm
< in.png pngtopnm -alpha > alpha.pnm
<image.pnm pnmtopng -alpha alpha.pnm -compression 0 > out.png
rm image.pnm alpha.pnm
元のpngファイルから特定のメタデータが失われる可能性があります。
アルファチャネルの処理方法のため、少し複雑に思えます。
Netpbmは、さまざまな異なる形式間の画像の変換を含む、グラフィック画像を操作するためのツールキットです。パッケージには、80を超えるグラフィック形式のコンバーターを含む220を超える個別のツールが含まれています。