PHP konvertiert Echtfarbenbilder in Palettenbilder

王林
Freigeben: 2024-03-21 11:28:02
nach vorne
639 Leute haben es durchsucht

Der

php-Editor Yuzai bietet Ihnen ein Tutorial zum Konvertieren von Echtfarbenbildern in Palettenbilder. Bei der Bildverarbeitung ist es eine häufige Anforderung, Echtfarbenbilder in Palettenbilder umzuwandeln. Dadurch kann die Dateigröße des Bildes verringert, die Ladegeschwindigkeit verbessert werden und es eignet sich für einige Szenen, die keine hohen Farbanforderungen stellen. In diesem Artikel erfahren Sie, wie Sie diesen Konvertierungsprozess mithilfe der GD-Bibliothek in PHP implementieren und so Bilder besser verarbeiten und die Webseitenleistung optimieren können.

PHP konvertiert Echtfarbenbild in Palettenbild

In der Computergrafik speichert ein Echtfarbenbild die vollständigen Farbinformationen jedes Pixels in einer 24-Bit- oder 32-Bit-Darstellung. Palettenbilder verwenden eine Palette, die eine begrenzte Anzahl von Farben speichert, wobei der Index jedes Pixels der Farbe in der Palette entspricht.

Um ein Echtfarbenbild in ein Palettenbild umzuwandeln, sind die folgenden Schritte erforderlich:

1. Palette erstellen

Zuerst müssen Sie eine Palette erstellen, die die Farbsammlung enthält, die Sie für das Palettenbild verwenden möchten. Die Anzahl der Farben sollte kleiner oder gleich 256 sein (8-Bit-Modus).

2. Quantifizieren Sie Echtfarbenbilder

Als nächstes muss das Echtfarbenbild quantisiert werden, wodurch sein Farbraum auf die Farben in der Palette reduziert wird. Folgende

Algorithmen

können verwendet werden:

    Average Slicing:
  • Berechnen Sie den Durchschnitt für jeden Farbkanal und runden Sie ihn auf die nächste Farbe in der Palette.
  • Median-Slicing:
  • Sortieren Sie die Pixel der Reihe nach und wählen Sie die Farbe des mittleren Pixels als Palettenfarbe aus.
  • Octree-Quantisierung:
  • Verwenden Sie die Octree-Datenstruktur, um den Farbraum in Unterräume zu unterteilen und die häufigste Farbe in jedem Unterraum auszuwählen.
3. Erstellen Sie ein Palettenindexbild

Nach der Quantisierung muss ein palettenindiziertes Bild erstellt werden, wobei jeder Pixelwert einen Farbindex in der Palette darstellt.

4. Palettendatei erstellen

Schließlich müssen Sie eine Palettendatei generieren, die die RGB-Werte der Farben in der Palette enthält. Palettendateien verwenden normalerweise Formate wie ACT, PAL oder BMP.

PHP-Codebeispiel

Das folgende

php

-Codebeispiel verwendet die GD-Bibliothek, um ein Echtfarbenbild in ein Palettenbild zu konvertieren:

<?php

// 加载真彩色图像
$image = imagecreatefrompng("image.png");

// 创建颜色表
$palette = array(
"white" => array(255, 255, 255),
"black" => array(0, 0, 0),
"red" => array(255, 0, 0),
"green" => array(0, 255, 0),
"blue" => array(0, 0, 255)
);

// 通过中间值算法量化图像
imagepalettetotruecolor($image);
imagequantize($image, 256, 0, GD_TRUE_COLOR_FIXED);

// 创建颜色索引图
$indexedImage = imagecreatetruecolor(imagesx($image), imagesy($image));
imagecopy($indexedImage, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));

// 生成调色板文件
$paletteFile = "palette.act";
file_put_contents($paletteFile, pack("CCCCCCCCCCCCCCCC", $palette["white"][0], $palette["white"][1], $palette["white"][2], $palette["black"][0], $palette["black"][1], $palette["black"][2], $palette["red"][0], $palette["red"][1], $palette["red"][2], $palette["green"][0], $palette["green"][1], $palette["green"][2], $palette["blue"][0], $palette["blue"][1], $palette["blue"][2]));

// 保存调色板图像
imagepng($indexedImage, "palette.png");

?>
Nach dem Login kopieren

Vorteile

Das Konvertieren von Echtfarbenbildern in Palettenbilder hat folgende Vorteile:

    Reduzierung der Dateigröße:
  • Palettenbilder verwenden Indexierung anstelle von Farbinformationen, wodurch die Dateigröße reduziert wird.
  • Schnellere Ladezeit:
  • Palettenbilder werden schneller geladen als Echtfarbenbilder, da nicht die Farbinformationen jedes Pixels dekodiert werden müssen.
  • Weniger Speicherbedarf:
  • Palettenbilder beanspruchen weniger Speicherplatz, da die Paletten in separaten Dateien gespeichert werden.
Nachteile

Das Konvertieren von Echtfarbenbildern in Palettenbilder hat auch einige Nachteile:

    Reduzierte Farbtreue:
  • Ein Palettenbild enthält eine begrenzte Anzahl von Farben, sodass die Farbtreue im Vergleich zu Echtfarbenbildern verringert ist.
  • Nicht für Farbverläufe geeignet:
  • Palettenbilder haben Schwierigkeiten bei der Darstellung von Farbverläufen, da sie diskrete Farben verwenden.
  • Komplexer Texturverlust:
  • Palettenbilder können Schwierigkeiten bei der Darstellung komplexer Texturen haben, da sie nur eine begrenzte Anzahl von Farben verwenden können.

Das obige ist der detaillierte Inhalt vonPHP konvertiert Echtfarbenbilder in Palettenbilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:lsjlt.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage