Description
Pour ceux qui font des maquettes peintes, certains supports sont affichés en niveaux de gris alors que ce serait bien de voir les images en couleur.
Voici décrit comment transformer une image noir et blanc en couleurs en utilisant ant et php.
Procédure
- Récupérer une image en N/B dont les "couleurs" sont bien distinctes et unies pour une même "couleur".
- Enregistrer l'image dans un format utilisable en php ( gif ).
- Trouver la localisation (x,y) de chaque couleur sur l'image.
- S'assurer de trouver une couleur (r,v,b) "correcte" pour chaque transcription et remplir un fihier php de ces couleurs.
- Passer la moulinette php pour transcrire les niveaux de gris en couleurs.
- Afficher l'image après traitement.
Exemple de code ant pour générer un fichier des couleurs connues
- Récupérer les rvb couleurs sur la page http://www.paintassistant.com/rlm.html.
- En faire un fichier php en utilisant des expressions régulières.
Exemple de code ant pour formater les codes couleurs
<replaceregexp
file="${out.fic}"
flags="gm"
match="BGCOLOR=${quote}#(..)(..)(..)${quote}${sup}${inf}/TD${sup}${inf}TD${sup}${inf}B${sup}${inf}P STYLE=${quote}margin-left:10${quote}${sup}RLM${inf}/P${sup}${inf}/B${sup}${inf}P STYLE=${quote}margin-left:10${quote}${sup}(.*?)${inf}/P${sup}${inf}/TD${sup}"
replace="${crlf}###$RLM\4 = imagecolorallocate( $dst_im , 0x\1 , 0x\2 , 0x\3 ) ;
###${crlf}"
byline="false"
/>
Extrait de code php généré
$RLM65 = imagecolorallocate( $dst_im , 0xB7 , 0xC6 , 0xCD ) ;
$RLM66 = imagecolorallocate( $dst_im , 0x2F , 0x33 , 0x35 ) ;
$RLM67 = imagecolorallocate( $dst_im , 0xF1 , 0xE9 , 0xD2 ) ;
$RLM68 = imagecolorallocate( $dst_im , 0x6C , 0x74 , 0x54 ) ;
$RLM69 = imagecolorallocate( $dst_im , 0x59 , 0x5C , 0x4E ) ;
$RLM70 = imagecolorallocate( $dst_im , 0x28 , 0x2C , 0x25 ) ;
Exemple de code php pour traiter les images en niveaux de gris
Extrait de code php pour traiter chaque pixel de l'image
function colorier( $image , $x_ini , $y_ini , $couleur_out )
{
$x_max = imageSX($image);
$y_max = imageSY($image);
$couleur_in = imagecolorat($image, $x_ini , $y_ini );
for ( $xx = 0 ; $xx < $x_max ; $xx++ ) for ( $yy = 0 ; $yy < $y_max ; $yy++ ) { if ( $couleur_in == imagecolorat($image, $xx , $yy ) ) { imagesetpixel($image, $xx,$yy, $couleur_out) ; } } }
Extrait de code php pour traiter chaque couleur
colorier( $dst_im , 80 , 90 , $fond ) ;
colorier( $dst_im , 1180 , 690 , $RLM70 ) ;
colorier( $dst_im , 1227 , 690 , $RLM75 ) ;
colorier( $dst_im , 1263 , 690 , $RLM76 ) ;
Extrait de code php pour rotationner les images et les sauver
$rotation = imagerotate($dst_im, 360-90 , $fond);
imagegif($rotation);
imagegif($rotation , $o );
imagedestroy($rotation);
imagedestroy($dst_im);
imagedestroy($img_src);
images avant / après
Bonnes pratiques
- utiliser des propriétés ( des constantes ) pour la réutilisabilité du code.
- faire attention aux quelques formats d'images nativement gérés par php ( java traite les bmp en plus par exemple ).
Aucun commentaire:
Enregistrer un commentaire