Code solutions to PHP, JS, CSSCode source PHP, JS, CSS

Répandez vos soluces sur la planète

Love me
Solucior » PHP GD IMAGE » Ajuster le taux de couleurs d'une image

Ajuster le taux de couleurs d'une image

05/25/2011 par Dux   -   2/5 (1 notes)

Ce script ajuste la quantité de couleurs d'une image jpg, gif ou png. En modifiant la valeur $variant entre -25 et 15, vous obtiendrez une image plus ou moins colorée.

Fonctionnement :
ce script va travailler sur une image palette temporaire de 256 couleurs. L'analyse des couleurs détermine l'augmentation des 3 valeurs rouge vert et bleu de la palette avec imagecolorset().
Le travail de calcul se fait sur une image plus grande que l'originale, ce qui permet de lisser les pixels lors du retour à la taille originale avec un resample. Car en effet, le travail en 256 couleurs peut créer des escaliers dans les zones de dégradé.

Pour améliorer ce script, il faudrait estimer des quantifiers pour établir une corrélation entre luminance et les 3 primaires en additive.

Voir l'image d'origine

Voir une démonstration de ce script en action :

Ouvrir dans une nouvelle fenêtre     Ouvrir dans la même fenêtre

code source



 
<?php
ini_set
('memory_limit', '128M');

// Set the amount of effect ( -25 to 15 )
$variant = 5;

// Size of the tempory image (according to the power of your server)
$multiple = 2;

// Path to the picture file
$url_img = 'picture.jpg';

// Detect format and create $img
$part = pathinfo($url_img);
$ext = strtolower($part['extension']);
if (
$ext == "jpg" or $ext == "jpeg") $img=imagecreatefromjpeg($url_img);
if (
$ext == "gif") $img=imagecreatefromgif($url_img);
if (
$ext == "png") $img=imagecreatefrompng($url_img);


if (
$variant<0) { $variant=$variant/$multiple; } else { $variant=$variant*$multiple; }
$quant= ($variant/70) +1;

// Create a bigger image for working with 256 colors
$img2=$img;
list(
$x,$y)=getimagesize($url_img);
$img=imagecreatetruecolor($x*$multiple,$y*$multiple);
imagecopyresampled($img, $img2, 0, 0, 0, 0, $x*$multiple, $y*$multiple, $x, $y);

// calculating and modification in palette color
imagetruecolortopalette($img, true, 256);
for(
$i=0; $i<imagecolorstotal( $img ); $i++ ) {
   
$c = ImageColorsForIndex( $img, $i );
   
$r=$c['red']; $v=$c['green']; $b=$c['blue'];
   if (
$r>$v && $r>$b) { $r=$r*$quant; $v=$v/$quant; $b=$b/$quant; }
   if (
$v>$r && $v>$b) { $r=$r/$quant; $v=$v*$quant; $b=$b/$quant; }
   if (
$b>$v && $b>$r) { $r=$r/$quant; $v=$v/$quant; $b=$b*$quant; }
   if (
$r>255) $r=255;
   if (
$v>255) $v=255;
   if (
$b>255) $b=255;
   
imagecolorset( $img, $i, $r, $v, $b );
}

// Back to original size with resample
imagecopyresampled($img2, $img, 0, 0, 0, 0, $x, $y, $x*$multiple, $y*$multiple);
$img=$img2;

// Now you can use $img to display or save it
?>
Noter ce code     |     Copié : 10x

Commentaires pour Ajuster le taux de couleurs d'une image

Aucun commentaire
Ajouter un commentaire Pseudo   Site
ZOOM


Largeur image dynamique selon son emplacement
Loupe image javascript
Zoom infini CSS3 et Javascript
Isoler une couleur
Opacité avec javascript
Simple galerie d'images PHP
Ajuster le taux de couleurs d'une image
Ajuster automatiquement la hauteur d'un textarea
Ajuster automatiquement luminosité contraste d'une image
Zoom en CSS3