ホームページ >バックエンド開発 >PHPチュートリアル >PHP はトゥルーカラー画像をパレット画像に変換します
php Xiaobian Yuzai は、トゥルー カラー イメージをパレット イメージに変換するチュートリアルを提供します。画像処理では、トゥルー カラー イメージをパレット イメージに変換することが一般的な要件です。これにより、画像のファイル サイズが削減され、読み込み速度が向上し、高い色要件が必要ない一部のシーンに適しています。この記事では、PHP で GD ライブラリを使用してこの変換プロセスを実装し、画像をより適切に処理し、Web ページのパフォーマンスを最適化する方法を紹介します。
PHP トゥルー カラー イメージをパレット イメージに変換する
コンピュータ グラフィックスでは、トゥルーカラー イメージは、24 ビットまたは 32 ビット表現を使用して、各ピクセルの完全な色情報を保存します。パレット イメージでは、限られた数の色が保存されるパレットが使用され、各ピクセルの インデックス がパレット内の色に対応します。
True Color イメージをパレット イメージに変換するには、次の手順が必要です。
1. カラーパレットの作成
まず、パレット イメージに使用する色の コレクションを含むパレットを作成する必要があります。色の数は 256 (8 ビット モード) 以下である必要があります。
2. トゥルー カラー画像の定量化
次に、トゥルー カラー イメージを量子化して、その色空間をパレット内の色に縮小する必要があります。次の アルゴリズム を使用できます:
3. パレットインデックス画像の作成
量子化後、パレット インデックス付きイメージを作成する必要があります。各ピクセル値はパレット内のカラー インデックスを表します。
4. パレット ファイルの生成
最後に、パレット内の色の RGB 値を含むパレット ファイルを生成する必要があります。パレット ファイルは通常、ACT、PAL、または BMP などの形式を使用します。
PHP コード例
次のphp コード例では、GD ライブラリを使用してトゥルー カラー イメージをパレット イメージに変換します。 True Color イメージをパレット化されたイメージに変換すると、次の利点があります:
ファイル サイズの削減: True Color イメージをパレット イメージに変換することには、いくつかの欠点もあります。
色の忠実度の低下: <?php
//トゥルーカラー画像をロード
$image = imagecreatefrompng("image.png");
//カラーテーブルを作成する
$palette = 配列(
"白" => 配列(255, 255, 255),
"黒" => 配列(0, 0, 0),
"赤" => 配列(255, 0, 0),
"緑" => 配列(0, 255, 0),
"青" => 配列(0, 0, 255)
);
//中間値アルゴリズムを通じて画像を量子化する
イメージパレットとトゥルーカラー($image);
imagequantize($image, 256, 0, GD_TRUE_COLOR_FIXED);
//カラーインデックスマップを作成する
$indexedImage = imagecreatetruecolor(imagesx($image), imagesy($image));
imagecopy($indexedImage, $image, 0, 0, 0, 0, imagex($image), imagesy($image));
//パレットファイルを生成
$paletteFile = "パレット.act";
file_put_contents($paletteFile, Pack("CCCCCCCCCCCCCCCCC", $palette["white"][0], $palette["white"][1], $palette["white"][2], $palette["black" ][0]、$palette["black"][1]、$palette["black"][2]、$palette["red"][0]、$palette["red"][1]、$パレット["赤"][2]、$パレット["緑"][0]、$パレット["緑"][1]、$パレット["緑"][2]、$パレット["青"] [0], $palette["blue"][1], $palette["blue"][2]));
//パレット画像を保存
imagepng($indexedImage, "palette.png");
?>
######アドバンテージ######
以上がPHP はトゥルーカラー画像をパレット画像に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。