electronika

Image couleur vers noir et blanc en php

Voici un petit scripte php qui permet de convertir une image couleur en noir et blanc (Niveau de gris en réalité)

Le principe de conversion est assez simple a réaliser, il consiste a récupérer la luminance de chacun des pixels de l’image en utilisant cette proportion:

luminance = (0.30 * R) + (0.59 * G) + (0.11 * B)

Avec R, G ou B une valeur comprise entre 0 et 255

En effet chaque pixel d’une image couleur est composé des valeurs R,G et B.

La transformation consiste ensuite à créer une image en remplacent les valeurs r,g et b par la valeur de la luminance pour chacun des pixels de l’image.

Le code:

function trans_to_nb($file,$file_out){if (file_exists($file)){
 
$image = imagecreatefromjpeg($file);
 
$x_dimension = imagesx($image);
 
$y_dimension = imagesy($image);
 
$new_image = imagecreatetruecolor($x_dimension, $y_dimension);//
 
for ($x = 0; $x < $x_dimension; $x++) {
 
for ($y = 0; $y < $y_dimension; $y++) {
 
$luminance_running_sum=0;
 
$rgb = imagecolorat($image, $x, $y);
 
$r = ($rgb >> 16) & 0xFF;
 
$g = ($rgb >> 8) & 0xFF;
 
$b = $rgb & 0xFF;
 
$luminance_running_sum = (0.30 * $r) + (0.59 * $g) + (0.11 * $b);
 
$color = imagecolorallocate($image,
 
$luminance_running_sum,
 
$luminance_running_sum,
 
$luminance_running_sum
 
);
 
imagesetpixel($new_image, $x, $y, $color);
 
}
 
}
 
imagejpeg($new_image, $file_out);
 
return true;
 
}else{
 
return false;
 
}
 
}

Utilisation

if (trans_to_nb("test.jpg","out.jpg")){echo"<img src="http://www.electronika.fr/blog/wp-admin/out.jpg" />";
 
}
 
else
 
{
 
echo"erreur fichier source inexistant";
 
}

Exemple

test.jpgout.jpg

Attention, veillez a créer le fichier out.jpg dans le même répertoire que le scripte et donner au minimum les droits d’écriture sur out.jpg et de lecture sur test.jpg.

Le fichier source est ici

Autres liens sur le traitement d’images

http://perception.inrialpes.fr/people/Boyer/Teaching/L3/analyse.pdf

juin 21st, 2008 Posted by admin | Programmation web - php, Traitement image | one comment

Un commentaire »

  1. […] pour chaque pixel de l’image suivant la couleur de celui-ci. La luminance est calculé avec une formule bien précise (Début de […]

    Pingback par » Histogramme d’une image en php | 4 janvier 2009

Laisser un commentaire

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous

Attention, l'anti-spam est impitoyable, pensez à faire un copier de votre message!


Anti-Spam Image