PHP convertit l'image en vraies couleurs en image de palette

王林
Libérer: 2024-03-21 11:28:02
avant
646 Les gens l'ont consulté

L'éditeur php Yuzai vous propose un tutoriel sur la conversion d'images en vraies couleurs en images de palette. Dans le traitement d'images, il est courant de convertir des images en vraies couleurs en images de palette, ce qui peut réduire la taille du fichier de l'image, améliorer la vitesse de chargement et convient à certaines scènes qui n'ont pas d'exigences de couleur élevées. Cet article explique comment utiliser la bibliothèque GD en PHP pour implémenter ce processus de conversion, vous aidant ainsi à mieux traiter les images et à optimiser les performances des pages Web.

PHP Convertir une image en vraies couleurs en image de palette

En infographie, une image TrueColor stocke les informations complètes sur la couleur de chaque pixel, en utilisant une représentation 24 bits ou 32 bits. Les images de palette utilisent une palette, qui stocke un nombre limité de couleurs, l'index de chaque pixel correspondant à la couleur de la palette.

La conversion d'une image en vraies couleurs en une image palette nécessite les étapes suivantes :

1. Créer une palette

Tout d'abord, vous devez créer une palette contenant les couleurs collection que vous souhaitez utiliser pour l'image de la palette. Le nombre de couleurs doit être inférieur ou égal à 256 (mode 8 bits).

2. Quantifiez les images en vraies couleurs

Ensuite, l'image en vraies couleurs doit être quantifiée, réduisant ainsi son espace colorimétrique aux couleurs de la palette. Les algorithmes suivants peuvent être utilisés :

  • Découpage moyen : Calculez la moyenne pour chaque canal de couleur et arrondissez-la à la couleur la plus proche dans la palette.
  • Découpage médian : Triez les pixels dans l'ordre et sélectionnez la couleur du pixel du milieu comme couleur de la palette.
  • Quantisation Octree : Utilisez la structure de données Octree pour subdiviser l'espace colorimétrique en sous-espaces et sélectionner la couleur la plus fréquente dans chaque sous-espace.

3. Créer une image d'index de palette

Après la quantification, une image indexée par palette doit être créée, où chaque valeur de pixel représente un index de couleur dans la palette.

4. Générer un fichier de palette

Enfin, vous devez générer un fichier de palette contenant les valeurs RVB des couleurs de la palette. Les fichiers de palette utilisent généralement des formats tels que ACT, PAL ou BMP.

Exemple de code PHP

L'exemple de code php suivant utilise la bibliothèque GD pour convertir une image en vraies couleurs en image de palette :

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

?>
Copier après la connexion

Avantages

La conversion d'images en vraies couleurs en images en palette présente les avantages suivants :

  • Réduction de la taille du fichier : Les images de palette utilisent l'indexation au lieu des informations de couleur, réduisant ainsi la taille du fichier.
  • Temps de chargement plus rapide : Les images de palette se chargent plus rapidement que les images en vraies couleurs car il n'est pas nécessaire de décoder les informations de couleur de chaque pixel.
  • Moins d'empreinte mémoire : Les images de palette occupent moins d'espace en mémoire car les palettes sont stockées dans des fichiers séparés.

Inconvénients

La conversion d'images en vraies couleurs en images en palette présente également certains inconvénients :

  • Fidélité des couleurs réduite : Il y a un nombre limité de couleurs dans une image de palette, la fidélité des couleurs est donc réduite par rapport aux images en vraies couleurs.
  • Ne convient pas aux dégradés : Les images de palette ont du mal à représenter les dégradés car elles utilisent des couleurs discrètes.
  • Perte de texture complexe : Les images de palette peuvent avoir des difficultés à représenter des textures complexes car elles ne peuvent utiliser qu'un nombre limité de couleurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:lsjlt.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal