/*---------------------------------------------------------------*/
|
/*
|
Titre : Modifications des composantes
|
|
URL : https://phpsources.net/code_s.php?id=964
|
Date édition : 15 Fev 2019
|
*/
|
/*---------------------------------------------------------------*/
|
|
function modif_composantes($src , $dest , $format , $red , $green , $blue){
|
/* Paramètres : $src : fichier source
|
* $dest : fichier de destination
|
* $format : format de l'image résultat
|
* ("GIF", "JPG", "PNG", "WBMP")
|
* $red, $green, $blue pourcentage à appliquer aux composantes
|
*
|
* EX : modif_composantes('image.jpg', 'image.png', 'png', 100, 200, 50)
|
* ne modifiera pas la composante rouge,
|
* multipliera par 2 le vert et divisera par 2 le bleu
|
*/
|
|
if (file_exists($src))
|
$size = getimagesize($src);
|
else
|
return FALSE;
|
|
switch($size[2])
|
{
|
case 1 :
|
if (imagetypes() & IMG_GIF)
|
$pic = imagecreatefromgif($src);
|
break;
|
case 2 :
|
if (imagetypes() & IMG_JPG)
|
$pic = imagecreatefromjpeg($src);
|
break;
|
case 3 :
|
if (imagetypes() & IMG_PNG)
|
$pic = imagecreatefrompng($src);
|
break;
|
default :
|
if (preg_match("/\.wbmp$/i", $src) && (imagetypes() & IMG_WBMP))
|
$pic = imagecreatefromwbmp($src);
|
}
|
if (!$pic)
|
return FALSE;
|
|
$colors_num = imagecolorstotal($pic);
|
|
for($i=0;$i<$colors_num;$i++)
|
{
|
$color = imagecolorsforindex($pic, $i);
|
$r = $color["red"];
|
$g = $color["green"];
|
$b = $color["blue"];
|
|
$r = $r * $red / 100;
|
$g = $g * $green /100;
|
$b = $b * $blue /100;
|
|
if ($r > 255)
|
$r = 255;
|
if ($g > 255)
|
$g = 255;
|
if ($b > 255)
|
$b = 255;
|
|
imagecolorset($pic, $i, $r, $g, $b);
|
}
|
|
$format = strtoupper($format);
|
if ($format == "GIF")
|
{
|
if (imagetypes() & IMG_GIF)
|
imagegif($pic, $dest);
|
else
|
return FALSE;
|
}
|
else if ($format == "JPG")
|
{
|
if (imagetypes() & IMG_JPG)
|
imagejpeg($pic, $dest);
|
else
|
return FALSE;
|
}
|
else if ($format == "PNG")
|
{
|
if (imagetypes() & IMG_PNG)
|
imagepng($pic, $dest);
|
else
|
return FALSE;
|
}
|
else if ($format == "WBMP")
|
{
|
if (imagetypes() & IMG_WBMP)
|
imagewbmp($pic, $dest);
|
else
|
return FALSE;
|
}
|
else return FALSE;
|
return TRUE;
|
}
|
|
| ?> |