現在の位置: ホーム> 最新記事一覧> ImageTrueColortopalette機能の高度な使用法は何ですか?パレットの色の数を細かく制御する方法は?

ImageTrueColortopalette機能の高度な使用法は何ですか?パレットの色の数を細かく制御する方法は?

gitbox 2025-08-05

imagetruecolortopalette()の基本的な使用法

ImageTrueColortopalette()関数の基本的な構文は次のとおりです。

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagetruecolortopalette</span></span><span> ( resource </span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$dither</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$colors</span></span><span> )
</span></span>
  • $画像:ターゲット画像リソース、通常、 ImageCreatefromJpeg()ImageCreateFrommpng()などの関数によって生成される画像リソース。

  • $ dither :ジッター処理を有効にするかどうか。ジッター処理は、色を減らしながら画像の詳細と遷移を維持するのに役立ちます。

  • $ COLORS :パレットで使用できる色の最大数を指定します。この値は、パレットの色の数を表す整数です。

 <span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagetruecolortopalette</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">256</span></span><span>);
</span></span>

上記のコードでは、 example.jpg画像を真の色から最大256色を含むパレット画像に変換します。


色の数を制御するためのヒント

Imagetruecolortopalette() (つまり$ colors )の色のパラメーター数は、画像変換後に使用できる色の最大数を直接決定します。このパラメーターの合理的な制御により、ファイルサイズを縮小しながら、画像が合理的な品質を維持できるようになります。

  1. 選択する適切な数の色

    多くの場合、適切な数の色を選択することが重要です。たとえば、いくつかの単純な画像やアイコンでは、256色で十分です。豊かな色の写真の場合、より高い色が必要になる場合があります。最高のカラー番号は、実験を通じて選択できます。

     <span><span><span class="hljs-title function_ invoke__">imagetruecolortopalette</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>);  </span><span><span class="hljs-comment">// 16 カラーパレット</span></span><span>
    </span></span>

    色の数がより低い値に設定されると、画像の詳細と勾配が失われ、画像が平らまたは歪んでいるように見える場合があります。したがって、調整時に色の数が画像コンテンツの複雑さと一致するようにする必要があります。

  2. ディザリングで画像効果を強化します

    Ditherパラメーターは、ジッターを有効または無効にするために使用されます。ジッター処理は、色制限画像にノイズを導入することにより、より豊富な色の勾配をシミュレートする一般的に使用される画像処理テクノロジーです。色カウントが低いパレット画像の場合、ジッターを有効にすると、通常、より自然な効果が得られます。

     <span><span><span class="hljs-title function_ invoke__">imagetruecolortopalette</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>);  </span><span><span class="hljs-comment">// ジッターを有効にします,使用16色</span></span><span>
    </span></span>

    ジッターが有効になっていない場合、画像の勾配は非常に硬く、「リボン」現象になります。

  3. 合理的に色数の上限を選択します

    画像ファイルのサイズとカラー効果のバランスをとるには、実際のニーズに応じて適切な色の上限を選択する必要があります。たとえば、Webページのサムネイルを生成する必要がある場合、通常、ファイルサイズを縮小しながら明瞭さを維持するために少量の色だけが必要です。色が大きくなると、ファイルサイズが増加し、時間を長く処理し、必要な実際の効果を超える可能性があります。

  4. 他の機能を操作します

    画像効果をさらに最適化するために、他のPHP画像処理関数と組み合わせてImagetrocolortopalette()を使用できます。たとえば、コントラストや輝度の調整など、変換前に画像フィルタリング処理を実行できるため、画像のメイン色がより顕著になり、パレットの最適化が容易になります。

     <span><span><span class="hljs-title function_ invoke__">imagefilter</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, IMG_FILTER_CONTRAST, -</span><span><span class="hljs-number">50</span></span><span>);  </span><span><span class="hljs-comment">// 強化されたコントラスト</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">imagetruecolortopalette</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">128</span></span><span>);    </span><span><span class="hljs-comment">// 使用128カラーパレット</span></span><span>
    </span></span>

    画像フィルターを介して色分布を調整すると、変換された効果をよりよく制御できます。


一般的な高度な使用シナリオ

  1. 小さなサイズのアイコンまたは画像を作成します

    小さなサイズのアイコンや画像を生成する必要がある場合、パレット画像は画像のストレージスペースを大幅に削減できるため、あまり多くの色を必要としません。たとえば、16x16のアイコン画像を作成する場合、256色で十分です。写真がより複雑な場合は、色の数を適切に増やすことができますが、通常は256色を超えません。

  2. カラー圧縮と最適化

    画像の色の数を減らすことは、大量の画像を保存したり、Webサイトの読み込み速度を最適化する必要がある場合に大量の画像を保存する効果的な方法です。一部のロゴやグラフィックスなど、比較的単一の色の画像の場合、少数の色を使用すると、ファイルサイズを大幅に削減できます。

  3. 古いスタイルまたはレトロ画像を生成します

    ImagetrueColortopalette()関数は、昔ながらの画像の効果をシミュレートするのに非常に適しています。たとえば、より低い色番号を使用すると、「低解像度」または「ピクセル化」効果が生じる可能性があります。これは、一部のデザインスタイルに非常に適しています。