![PNG 形式で保存されたスクリーンショットのサイズは Linux と Windows で異なります](https://rvso.com/image/1520076/PNG%20%E5%BD%A2%E5%BC%8F%E3%81%A7%E4%BF%9D%E5%AD%98%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AF%20Linux%20%E3%81%A8%20Windows%20%E3%81%A7%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99.png)
問題はこれです。数週間前に Linux に完全に移行し、定期的に使用するスプレッドシートを編集していたところ、その一部のスクリーンショットを撮ると、結果として得られる画像が同じ画面領域に対して Windows の同等のスクリーンショットの 2.5 倍のスペースを使用することに気づきました... なぜでしょうか?
手順
- Windows 7: LibreOffice でスプレッドシートを開き、標準のキーボード ショートカットで全画面のスクリーンショットを撮り、MS ペイントに貼り付け、必要な領域を切り取って PNG として保存します。
- Ubuntu Linux 16.10: LibreOffice でスプレッドシートを開き、Ubuntu の組み込みツールで目的の領域のスクリーンショットを撮り、PNG として保存します。
さらに、Linux のスクリーンショットを GIMP で最大圧縮を使用して再保存しましたが、Linux のスクリーンショット画像のサイズは約 106 KB であるのに対し、Windows のスクリーンショット画像は基本的に同じ画像サイズ (同じ 360 ピクセルの高さで 10 ピクセル幅が広い) で約 42 KB でした。デスクトップ サイズは Windows では 1920x1080 でしたが、Linux では 1680x1050 ですが、画像サイズが同じなので問題にはなりません... GIMP は、両方で同じピクセル数 (約 305k)、ロード時に同じメモリ (3.1 MB)、同じレイヤー数 (1) を報告します。唯一の違いは dpi で、Windows では 96 で Linux では 72 ですが、これも他の数値が同じなので問題にはなりません。
理由を教えてください。MS ペイントは非可逆 PNG 圧縮を使用しているのでしょうか?
答え1
非可逆 PNG 圧縮というものは存在しません。
しかし、確かに優れた PNG 圧縮というものは存在します。つまり、PNG 圧縮をサポートするすべてのアプリが、他のアプリと同じくらい優れたパフォーマンスを発揮できるわけではありません。
そのため、私は Windows で PNGGauntlet というアプリを使用して、PNG ファイルのサイズを最適化しています。PNGGauntlet 自体は PNGOut、OptiPNG、DeflOpt を使用し、それらの出力の中から最適なものを選択します。これにより、不要な透明度が破棄され、色深度が可能な限り低く抑えられ、より優れた圧縮アルゴリズムが使用されます。
コピーをコンパイルできると思いますオプティPNGLinux 用。