L'allocation des couleurs est une partie très importante lors du traitement des vignettes de l'image. Une bonne gestion des couleurs permet aux vignettes de conserver plus de détails et d'avoir de meilleurs effets visuels, en évitant des problèmes tels que les rubans et la distorsion. Cet article utilisera PHP comme exemple pour expliquer certaines techniques pratiques d'allocation des couleurs pour vous aider à améliorer la qualité globale des miniatures.
Les vignettes sont généralement plus petites et ont un nombre de pixels limité. Si l'allocation des couleurs est déraisonnable, il est facile de provoquer une baisse de la qualité de l'image. Par exemple:
Des quantités trop petites de couleurs entraînent une perte de détails d'image.
La sélection des couleurs est inexacte, entraînant une différence de couleur évidente.
Le canal transparent n'est pas correctement géré, entraînant des exceptions de fond.
Pour éviter ces problèmes, nous devons raisonnablement planifier et attribuer des couleurs dans le programme.
Dans PHP, les bibliothèques GD sont couramment utilisées pour le traitement d'image. Voici plusieurs techniques pratiques:
Priorisez la création d'une vraie toile de couleur avant de traiter l'image, en garantissant que davantage de couleurs sont disponibles.
<?php
// Créer une nouvelle image de couleur vraie
$thumbWidth = 200;
$thumbHeight = 200;
$thumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
// Chargez l'image d'origine
$source = imagecreatefromjpeg('https://m66.net/images/original.jpg');
// Copier et redimensionner
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumbWidth, $thumbHeight, imagesx($source), imagesy($source));
// Sauver les miniatures
imagejpeg($thumb, 'https://m66.net/images/thumbnail.jpg');
// Mémoire libre
imagedestroy($thumb);
imagedestroy($source);
?>
ImageCreateTrueColor () est la clé pour éviter la limite de la quantité de couleur et préserver les détails de l'image d'origine dans la mesure maximale.
Si votre image a un arrière-plan transparent, tel que PNG, assurez-vous de traiter les informations transparentes avant la copie.
<?php
$thumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
$source = imagecreatefrompng('https://m66.net/images/original.png');
// Les couleurs transparentes sont autorisées
imagesavealpha($thumb, true);
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
imagefill($thumb, 0, 0, $transparent);
// Copier et redimensionner
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumbWidth, $thumbHeight, imagesx($source), imagesy($source));
// Sauver les miniatures
imagepng($thumb, 'https://m66.net/images/thumbnail.png');
imagedestroy($thumb);
imagedestroy($source);
?>
ImagesVealpha () et ImageColorAllocatEalpha () peuvent garantir que le fond transparent reste correctement.
Pendant le processus de mise à l'échelle, il est recommandé d'utiliser ImageCopyResampled () au lieu d' imageCopyResized () . Le premier est lissé et le résultat est plus délicat et naturel.
// Démonstration correcte
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumbWidth, $thumbHeight, imagesx($source), imagesy($source));
Bien que l'imagecopyResized () soit rapide, elle est sujette aux rubans et n'est pas recommandée pour la génération de miniatures de haute qualité.
Si vous l'enregistrez enfin en GIF, vous pouvez utiliser ImageTrueColortOpalette () pour convertir l'image de couleur vraie en une image de palette et contrôler raisonnablement le nombre de couleurs.
<?php
$thumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
$source = imagecreatefromgif('https://m66.net/images/original.gif');
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $thumbWidth, $thumbHeight, imagesx($source), imagesy($source));
// Convertir en palette de couleurs,Support maximal256couleur
imagetruecolortopalette($thumb, true, 256);
// Sauver les miniatures
imagegif($thumb, 'https://m66.net/images/thumbnail.gif');
imagedestroy($thumb);
imagedestroy($source);
?>
Si l'optimisation des palettes n'est pas effectuée, le GIF deviendra flou ou que l'écart de couleur sera évident.
Dans le traitement des vignettes de l'image, l'allocation rationnelle des couleurs, la gestion correcte des canaux transparents et l'utilisation d'algorithmes de mise à l'échelle de haute qualité peuvent améliorer considérablement le visuel et le professionnalisme de l'image finale.
Si vous souhaitez que la qualité de la miniature soit plus loin, vous pourriez aussi bien commencer par les conseils ci-dessus pour optimiser votre processus de traitement PHP.
N'oubliez pas: les détails déterminent la qualité! ??