CLASSE DE TRAITEMENT D'IMAGE

Signaler
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
bayahiassem
Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46324-classe-de-traitement-d-image

bayahiassem
Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2008

Salut, voici une fonction que vous pouvez ajouter à la classe et qui permet d'inverser l'image horizontalement:

public function mirrorEffect()
{
for($x=0;$x<$this->width/2;$x++)
{
for($y=0;$y<$this->height;$y++)
{
$rgb = imagecolorat($this->source,$x,$y);
$r = (($rgb>>16)& 0xFF);
$g = (($rgb>>8)& 0xFF);
$b = ($rgb & 0xFF);

$rgb2 = imagecolorat($this->source,$this->width-$x - 1,$y);
$r2 = (($rgb2>>16)& 0xFF);
$g2 = (($rgb2>>8)& 0xFF);
$b2 = ($rgb2 & 0xFF);

$color1 = imagecolorallocate($this->source,$r,$g,$b);
$color2 = imagecolorallocate($this->source,$r2,$g2,$b2);

if(!imagesetpixel($this->source,$this->width-$x,$y,$color1) | !imagesetpixel($this->source,$x,$y,$color2))
return false;
}
}

return true;
}

et une autre fonction qui permet d'enlever l'effet des yeux rouges (il faut envoyer à cette fonction la position ainsi que la taille de la partie à traiter dans l'image)

public function removeRed($startX,$startY,$width,$height)
{
for($x=$startX;$x<$startX+$width;$x++)
{
for($y=$startY;$y<$startY+$height;$y++)
{
$rgb = imagecolorat($this->source,$x,$y);
$r = (($rgb>>16)& 0xFF);
$g = (($rgb>>8)& 0xFF);
$b = ($rgb & 0xFF);

while($r > $g + $b - 30)
{
$r = $r - 2;
}

$color = imagecolorallocate($this->source,$r,$g,$b);
if(!imagesetpixel($this->source,$x,$y,$color))
return false;
}
}
return true;
}
bayahiassem
Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2008

bonjour,

ce code est magnifique, merci Grunkz. Vous pouvez ajouter à votre class ces fonctions:

/**
* Ajoute ou diminue la teinte de chaque couleur
* @access public
*/
public function colorize($red,$blue,$green,$alpha)
{
imagefilter($this->source,IMG_FILTER_COLORIZE,$red,$blue,$green,$alpha);
}

/**
* Modifie le facteur gamma
* @access public
* @param int $factor Facteur de gamma
*/
public function gammaCorrect($factor)
{
imagegammacorrect($this->source,1.0,$factor);
}

/**
* Retourne l'image
* @access public
* @param int $degrees Degree de rotation
*/
public function rotate($degrees)
{
$this->source = imagerotate($this->source, $degrees, -1);
}

juste une petite remarque: pour le contraste le sens des valeurs est inversé: -100 c'est le maximum contrast, 100 c'est le minimum.
lonva6
Messages postés
1
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
23 avril 2008

Elle est bien sympa cette class quand meme et super utile
jvais essayer de l'optimiser un peu.. et aussi rajouter des fonctions
genre :
- Au lien de $r,$v,$b mettre une couleur en hexa type #8FEC34 ou 8FEC34 ou 255:0:150
- Des autres effets comme Negatif ou bien Colorisation ou encore Sepia
- Une gestion des erreurs.. etc..

bref j'essaye de faire ca dès que j'ai un peu de temp..
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

http://fr.php.net/manual/fr/image.setup.php

Note: Depuis PHP 4.3, il existe une version de GD qui est distribuée avec PHP. Cette version contient des fonctionnalités supplémentaires, comme les canaux alpha, et il est recommandé de l'utiliser de préférence à la bibliothèque externe, car elle est mieux supportée, et bien plus stable.

embarquée != externe