16

これらのフィルターは、PHPでのimagepng()の出力にどのように影響しますか?

  • PNG_NO_FILTER
  • PNG_FILTER_NONE
  • PNG_FILTER_SUB
  • PNG_FILTER_UP
  • PNG_FILTER_AVG
  • PNG_FILTER_PAETH
  • PNG_ALL_FILTERS

ドキュメントには、それぞれに「imagepng()関数で使用される特別なPNGフィルター」と記載されています。

PNG_NO_FILTERを使用すると、出力のファイルサイズが小さくなるようですが、それ以外の点では、どのように影響を受けるかはわかりません。どんな洞察も本当にありがたいです。

4

3 に答える 3

15

http://www.w3.org/TR/PNG-Filters.htmlのPNG 仕様によると、これらのフィルタの目的は、最適な圧縮のために画像データを準備することです。

None フィルターを使用すると、スキャンラインは変更されずに送信されます。データの前にフィルター タイプのバイトを挿入するだけで済みます。

サブフィルターは、各バイトと前のピクセルの対応するバイトの値との差を送信します。

Up フィルターはSub フィルターと同じですが、現在のピクセルのすぐ左ではなく、すぐ上のピクセルが予測値として使用される点が異なります。

平均フィルターは、隣接する 2 つのピクセル (左と上) の平均を使用して、ピクセルの値を予測します。

Paeth フィルターは、3 つの隣接ピクセル (左、上、左上) の単純な線形関数を計算し、計算された値に最も近い隣接ピクセルを予測値として選択します。この手法は、Alan W. Paeth [PAETH] によるものです。*

于 2010-06-15T19:50:54.880 に答える
2

これらはすべて、PNG エンコーダーがピクセル値を決定するために使用できるさまざまなアルゴリズムです。よくわかりませんが、このページはある程度詳しく説明されているようです: http://www.w3.org/TR/PNG-Filters.html

于 2010-06-15T19:45:51.320 に答える