多くの場合、メモリ使用量は、画像処理にPHPを使用する場合に重要な問題です。特に、高解像度の真のカラー画像を扱う場合、プログラムが占めるメモリは劇的に増加し、メモリオーバーフローエラーにさえつながります。 PHPは非常に実用的な機能を提供し、画像処理中のメモリの使用量を効果的に削減し、それによりプログラムの安定性とパフォーマンスを改善するのに役立ちます。
ImagetRueColortopalette()は、真の色の画像をパレット画像に変換するPHP GDライブラリの関数です。真の色の画像は通常、24ビットまたは32ビットの色深度(透明チャネルを含む)を使用しますが、パレット画像は最大256色しか使用しません。パレット画像のデータ構造はより単純であるため、消費されるメモリスペースも大幅に減少します。
関数プロトタイプは次のとおりです。
bool imagetruecolortopalette ( resource $image , bool $dither , int $ncolors )
$画像:変換する画像リソース。
$ dither :ディザリング効果を使用して色、ブール値を近似するかどうか。
$ ncolors :パレットの最大色の数、最大256。
真のカラー画像は、ピクセルあたり3〜4バイト(RGBまたはRGBA)を取り、1000x1000ピクセルの画像には約3〜4MBのメモリが必要です。パレット画像はピクセルあたり1バイトのみを占め、色情報はパレットアレイに保存され、メモリスペースを大幅に保存します。
変換の例:
<?php
// 真の色の画像をロードします
$img = imagecreatefromjpeg('https://gitbox.net/images/sample.jpg');
// 真の色の画像を最も変換します 128 カラーパレット画像,ジッター効果をオフにします
imagetruecolortopalette($img, false, 128);
// 出力画像
header('Content-Type: image/png');
imagepng($img);
// 無料のリソース
imagedestroy($img);
?>
上記のコードでは、 ImagetRueColortopalette()は真の色の画像をパレット画像に変換し、メモリ消費を大幅に削減し、色の要件ができる限り高くないが最適化されたパフォーマンスが必要なシナリオに適しています。
メモリが限られているサーバー環境は、大きな画像のメモリが過剰に使用されるため、プログラムのクラッシュを回避できます。
サムネイル、アイコン、Webページの写真など、色の精度の要件が低い写真の表示。
画像処理時間が必要であり、パレット画像処理速度は通常、真のカラー画像よりも高速です。
パレット画像に変換すると、色の情報が失われ、画像の色の歪みが生じる可能性があります。
ジッターを使用すると、色の歪みが軽減されますが、処理時間を増やし、結果として複雑になります。
パレットの色の数は256を超えることはできません。
要約すると、 ImageTrueColortopalette()は、PHP画像処理における実用的な機能です。特定の画像品質を確保しながら、画像のメモリ使用量を大幅に削減でき、開発者がプログラムの運用効率と安定性を改善するのに役立ちます。