ホームページ > バックエンド開発 > PHPチュートリアル > PHP はトゥルーカラー画像をパレット画像に変換します

PHP はトゥルーカラー画像をパレット画像に変換します

王林
リリース: 2024-03-21 11:28:02
転載
679 人が閲覧しました

php Xiaobian Yuzai は、トゥルー カラー イメージをパレット イメージに変換するチュートリアルを提供します。画像処理では、トゥルー カラー イメージをパレット イメージに変換することが一般的な要件です。これにより、画像のファイル サイズが削減され、読み込み速度が向上し、高い色要件が必要ない一部のシーンに適しています。この記事では、PHP で GD ライブラリを使用してこの変換プロセスを実装し、画像をより適切に処理し、Web ページのパフォーマンスを最適化する方法を紹介します。

PHP トゥルー カラー イメージをパレット イメージに変換する

コンピュータ グラフィックスでは、トゥルーカラー イメージは、24 ビットまたは 32 ビット表現を使用して、各ピクセルの完全な色情報を保存します。パレット イメージでは、限られた数の色が保存されるパレットが使用され、各ピクセルの インデックス がパレット内の色に対応します。

True Color イメージをパレット イメージに変換するには、次の手順が必要です。

1. カラーパレットの作成

まず、パレット イメージに使用する色の コレクションを含むパレットを作成する必要があります。色の数は 256 (8 ビット モード) 以下である必要があります。

2. トゥルー カラー画像の定量化

次に、トゥルー カラー イメージを量子化して、その色空間をパレット内の色に縮小する必要があります。次の アルゴリズム を使用できます:

  • 平均スライス: 各カラー チャネルの平均を計算し、パレット内で最も近い色に丸めます。
  • 中間値のスライス: ピクセルを の順序で並べ替え、中間のピクセルの色をパレットの色として選択します。
  • 八分木量子化: 八分木を使用する データ構造 色空間を部分空間に分割し、各部分空間で最も高い周波数を持つ色を選択します。

3. パレットインデックス画像の作成

量子化後、パレット インデックス付きイメージを作成する必要があります。各ピクセル値はパレット内のカラー インデックスを表します。

4. パレット ファイルの生成

最後に、パレット内の色の RGB 値を含むパレット ファイルを生成する必要があります。パレット ファイルは通常、ACT、PAL、または BMP などの形式を使用します。

PHP コード例

次の

php コード例では、GD ライブラリを使用してトゥルー カラー イメージをパレット イメージに変換します。

<?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");

?>
ログイン後にコピー
######アドバンテージ######

True Color イメージをパレット化されたイメージに変換すると、次の利点があります:

ファイル サイズの削減:

パレット イメージは、色情報の代わりにインデックスを使用するため、ファイル サイズが削減されます。
  • 読み込み時間の短縮: パレット イメージは、各ピクセルの色情報をデコードする必要がないため、トゥルーカラー イメージよりも速く読み込まれます。
  • メモリ使用量の削減: パレット イメージは別のファイルに保存されるため、メモリ内で使用するスペースが少なくなります。
  • 欠点

True Color イメージをパレット イメージに変換することには、いくつかの欠点もあります。

色の忠実度の低下:

パレット イメージ内の色の数は制限されているため、トゥルー カラー イメージと比較して色の忠実度は低下します。
  • グラデーションには適していません: パレット画像は個別の色を使用するため、グラデーションを表現するのが困難です。
  • 複雑なテクスチャが失われる: パレット イメージでは使用できる色が限られているため、複雑なテクスチャを表現するのが難しい場合があります。

以上がPHP はトゥルーカラー画像をパレット画像に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:lsjlt.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート