PNGファイルの圧縮レベルとそれが非可逆であるかどうかを知る方法は?


3

PNGファイルが圧縮されているかどうか、およびWindowsでどのように(少なくとも、可逆圧縮であるか)を知ることができますか?Windowsエクスプローラから標準のファイルプロパティダイアログを開くと、これに関するプロパティが表示されません。

回答:


8

PNGは、PNG仕様で義務付けられているように、常にDEFLATEアルゴリズムによって圧縮されます。これは、zip圧縮プログラムなどで使用されるアルゴリズムと同じです。

PNG用の非可逆圧縮アルゴリズムはありません。PNGは常に無損失です。

免責事項:PNG として保存する前に画像の品質(色深度)を下げることでPNGサイズを「最適化」する方法があります。これはPNG自体とは関係なく、PNGでも元のファイルでも確実に検出することはできません。


多くの画像編集アプリでは、作業をPNGとして保存するときに追加のパラメーターを指定できます。たとえば、paint.netには「ディザリングレベル」オプションがあります。ZIP圧縮については、7-Zipなどのアーカイバを使用して圧縮レベルを指定することもできます。そのことについて何?可能な場合、PNGヘッダーからこの情報を読み取る方法はありますか?
TecMan

2
@TecMan "ディザリングレベル"は、PNGを保存せずに、画像を8ビットカラーに縮小するオプションです。PNGだけでなく、8ビットの保存ごとに同じであることに注意してください。ファイル操作とはまったく関係がなく、単に利便性があることを示しています。他のエディターでは、最初に「convert-> 8bit」を実行してから「save as」を実行します。zip圧縮レベルの選択に関しては、考えていませんでした。ただし、(損失がないため)イメージには影響せず、圧縮と解凍のメモリ使用量にのみ影響します(7-zipでは推定値を確認できます)。
Agent_L

paint.netの場合、「ディザリングレベル」と「ビット深度」は、画像をPNGとして保存するときに設定できる2つの異なるオプションです。また、各オプションでさまざまなサイズのさまざまな効果や画像を再生できます。
TecMan

1
@TecMan:7-Zipまたは他のアーカイバーを使用して圧縮レベルを設定する場合、ZIPファイルから取得できますか?同様に、PNGヘッダーにも保存されていないようです。ディザリングは、画像にバンディングを減らすことに関係しています。これは、PNG圧縮とは直接関係ありません。要は、そもそもなぜこれらの詳細を知りたいのですか?
カラン

1
@TecMan:スクリーンショットを見るときに圧縮レベルを知ることが違いを生むようなインスタンスは考えられませんが、何らかの理由でそれが重要なのかもしれません。とにかく、あなたには答えがあります。
カラン

2

画像ファイルの圧縮率の推定は、実際には非常に簡単です。画像の幅、高さ、ビット深度を知る必要があります。圧縮されていない生画像データで必要なデータ量を計算するには、次の簡単な操作を行う必要がありますraw data size = image width * image heigth * (bits per pixel / 8)。次にraw data size、PNGのファイルサイズで除算するだけで、推定圧縮率が得られます(ヘッダーなどにより正確な値ではありません)。たとえば、640 x 480 x 32の画像640 * 480 * (32 / 8)には1 273 800バイトが必要です。PNGに200kBがあると仮定しましょう。(200 * 1024)/ 1273800を除算します。これにより、圧縮率は約0.16になります。

そして、1つの事実について覚えておいてください。時々、24ビット画像は実際には32ビット値として保存されます。それを考慮に入れなければなりません。


それはマニュアルであり、少し大雑把な計算です。問題は、それを自動的に知る方法についてでした。とにかく、あなたの答えに+1。
TecMan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.