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é
Dans la même catégorie : Php Mysql

Quand Wamp vous affiche que des messages Forbidden

Passer l'activation de Windows 7 temporairement avec invite de commande
réduireSocial

rss 3D png rss 3D png


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

Donnez votre note à ce tuto sur 10 :

Script pour charger une publicité une fois que la page web est en place

Comment changer du texte dans toute une base de donnée mysql

Quand Wamp vous affiche que des messages Forbidden

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


Il y a 8 années, 1 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 ! ).