2

PNG 画像をビットマップに読み込み、変更せずに保存しようとしています。

私はこれらの行に沿って何かを試しました:

var png = Bitmap.FromFile("t_02.png");
png.Save("t_02_out.png", ImageFormat.Png);

私も試しました:

var png = Bitmap.FromFile("t_02.png");
png.Save("t_02_out.png");

いずれの場合も、元の 233kb ファイルから 356kb のイメージが作成されました。私は何を間違っていますか?

4

2 に答える 2

0

問題の画像は、グレースケール カラー タイプで保存されます。仕様では次のように説明されています。

http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html

ピクセルは、1 バイトとして格納されます。.NETピクセル形式に関係なく、PNG ファイルを 32 ビットとして保存します。

私が得た最も近いものは、AForgeグレースケール フィルターと保存を使用することです。これにより、パレット ストレージに変わります。

結果はオリジナルにかなり近づきますが、多くの場合、パレットのためにさらに大きくなります。

結論: .NET イメージ形式のサポートはひどいものです。私は以前ImageMagic、.NET の無能さを解決していました。

于 2013-09-18T13:31:48.717 に答える