色の数の設定はコアパラメーターであり、変換された画像が保持できる色の数を直接決定します。影響は主に次の側面に反映されています。
色の数が小さすぎる場合(16や32など)、画像内の多数の色がマージまたは近似され、特に写真ベースの画像では詳細が簡単に歪められます。この歪みは通常、次のように現れます。
カラーブロッキング:元々滑らかな色の遷移が突然になります。
色ドリフト:色は元の画像とはほど遠いもので、視覚効果は大幅に減少します。
色の数が128または256に増加すると、画像は基本的にほとんどの色レベルを保持でき、肉眼の観察は元の画像とほぼ同じです。しかし、これは、画像ファイルのサイズが元のTruecolor画像に近く、圧縮の利点が低下することも意味します。
画質とパフォーマンスのバランスが最適であるため、画像コンテンツと使用法のシナリオと組み合わせて判断する必要があります。ここにいくつかの実用的な提案があります:
アイコンとグラフィカルインターフェイス(UI)要素:16〜64色に設定できます。このタイプの画像自体の色が少ないため、変換後の損失は小さいです。
写真、グラデーションの背景画像:128または256色に設定することをお勧めします。これにより、画像の詳細がより適切に保存されます。
$ ditherを有効にする= trueは、カラージッターアルゴリズムを導入し、少量の色でよりリッチな視覚階層をシミュレートします。特に、色の数が小さい場合、色ブロックと輪郭のジャグを大幅に減らすことができます。
$image = imagecreatefromjpeg('https://gitbox.net/images/sample.jpg');
imagetruecolortopalette($image, true, 64);
このコードは、画像を64色に制限し、ジッターをオンにします。これは、画像サイズを必要とするが特定の品質を保持したいシーンに適しています。
複雑なアプリケーションの場合、画像の色の分布を動的に分析することで色の数を決定できます。たとえば、写真で色のヒストグラム分析を実行し、その色の多様性を決定し、これに基づいて$ ncolors値を調整します。
誤解:色が少ないほど、 <br> すべての画像が色を圧縮するのに適しているわけではありません。特に、過度の圧縮が深刻な歪みを引き起こす可能性があるため、細かい詳細を必要とする画像です。
誤解:ジッターをオンにする方が常に優れています<br> ジッターは視覚効果を改善することができますが、一部のコンテキストで画像の読みやすさに影響を与える追加のノイズを導入する可能性があります。要件に応じて有効にするかどうかを決定します。
提案:ファイル形式の最適化と協力してください<br> PNG-8形式としてパレット画像を保存すると、ボリュームをさらに減らすことができます。たとえば、 ImagePng()関数を使用して出力します。
imagepng($image, 'https://gitbox.net/images/optimized.png', 9);