Tayo
Astuce et Tutorial » Programmation / Developpement » Php Mysql » Aide rédigée par Zabuza
Description de cet article : Modifier la luminosité d'une image, rapidement, grâce à php.
Lire les commentaires

Php : Jouer sur le Contraste / Luminosité d'une image





Ce petit code permet simplement de modifier la luminosité d'une image en php. Pour se faire la librairie GD est utilisée.

La fonction est relativement rapide ( environ un dizième de seconde, dépendant de l'ordinateur où est éxécuté le script.. ), tout en étant facilement compréhensible.

Ci dessous, à gauche, l'image "normale". Ci dessous, à droite, l'image crée par PHP, elle se veut plus lumineuse.











 


Que fait le script ?



  • Dans un premier l'image est chargée avec la fonction imagecreatefromjpeg. Celle-ci s'appelle dans notre exemple "votre-image.jpg".

  • La variable $diff influe directement sur la différence de couleur. Pour augmenter la luminosité, utilisez une valeur numérique négative. Au contraire, pour la rendre plus sombre, la variable $diff devrait être positive...

  • Deux boucles while.On procède ligne après ligne.

  • Chaque pixel est analysé. Sa couleur rouge, vert, bleue. On viendra modifier la "nouvelle image".


 


[code=php]<?php


<?php

$im = imagecreatefromjpeg("votre-image.jpg");

$diff = -30;  #Valeur a modifier pour gérer la lumiosité

$x = imagesx($im) ;

$y = imagesy($im);



$xi = 1 ; $yi = 1 ;

$im2 = @imagecreatetruecolor ($x, $y) ;

while($yi <=$y) {

while($xi <$x) {

$rgb = imagecolorat($im, $xi, $yi); #Récupération des valeurs de couleur rgb de notre image à un point donné.



$r = ($rgb >> 16) & 0xFF;

$g = ($rgb >> 8) & 0xFF;

$b = $rgb & 0xFF;

$r = $r - $diff ;

$g = $g - $diff ;

$b = $b - $diff ;

if ($r > 255) { $r =255 ; } # Pour ne pas tout faire bugger. L'indice rgb va de 0 à 255.

elseif($r <0) { $r = 0 ; }

if ($g > 255) { $g =255 ; }

elseif($g <0) { $g = 0 ; }

if ($b > 255) { $b =255 ; }

elseif($b <0) { $b = 0 ; }

$color = imagecolorallocate($im2, $r, $g, $b ); # Désignation d'une couleur.

  imagesetpixel($im2, $xi, $yi, $color); # On place le pixel au coordonnées $xi et $yi avec les nouvelles couleurs $color.



$xi ++;

}

$xi = 1 ;

$yi++;

}

header ("Content-type: image/jpeg"); # Pour indiquer au navigateur qu'il doit afficher une "image" et non une page html.



imagejpeg ($im2,"",70); # On affiche l'image avec une qualité jpeg de 70 sur 100



imagedestroy($im2);

die(); # On arrête le script php, afin d'éviter un petit bug de texte "d'après".

?>


[/code]


 


Espérons que ce script vous soit utile..



réduireNews
réduireTutoriel lié
réduireSocial

rss 3D png rss 3D png


Pseudo :
Pass :
Les lecteurs ont donné une note moyenne de :
note 1
Note: 1 sur 10

Donnez votre note à ce tuto sur 10 :

Liste des commentaires pour Php : Jouer sur le Contraste / Luminosité d'une image


Il y a 9 annes, 11 mois
Tu devrais faire partir $xi et $yi à 0 sinon tu mange une rangé de pixels en haut et à gauche.
Cela merci très utile.
Votre PseudoIl y a 0mn
Votre commentaire forum
Vous avez la parole
Laissez un commentaire sur cet article.
Pseudo :


Facultatif : Cliquez ici pour choisir une tête
Votre email ( non publié ) :

Image anti spam :
Code Image
Recopier les 5 chiffres de cette image :






Prendre contact avec Tayo.fr : Formulaire Tayo

Tayo.fr, copyright jusqu'en 2233 ( Au moins ! ).