Affichage des articles dont le libellé est image. Afficher tous les articles
Affichage des articles dont le libellé est image. Afficher tous les articles

mardi 26 janvier 2010

ant / php : convertir une image niveau de gris --> couleur


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



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 ).




Plus d'informations sur



  • la tâche replaceregexp ici.

  • Ant ici.




vendredi 22 janvier 2010

ant : créer des vignettes


Description


Ant permet de copier des fichiers de façon à les redimensionner, ce qui est adéquat pour faire des vignettes.
Voici comment créer des vignettes pour certains types de fichiers.


Exemple


Pour créer des vignettes d'une taille maximum de 160 en largeur pour des jpeg depuis le répertoire relatif ./in/images vers le répertoire relatif ./out/_img.

Pour tester, taper la ligne suivante en ligne de commande :
ant -f imagettes.xml
à supposer que le fichier d'exemple ci-après se nomme imagettes.xml.

Installation supplémentaire : la tâche image nécessite l'installation de fichiers jar trouvable ici et à placer par exemple dans le répertoire lib de votre installation ant.

<?xml version="1.0" encoding="ISO-8859-1"?>

<project name="makeThumbs" default="makeThumbs" basedir=".">

<description> truc </description>

<property name="img.rep.in" value="./in/images"/>
<property name="img.rep.out" value="./out/_img" />

<target name="makeThumbs">
<image destdir="${img.rep.out}" overwrite="yes">
<fileset dir="${img.rep.in}">
<include name="**/*.jpeg" />
</fileset>
<scale width="160" proportions="cover"/>
</image>
</target>

</project>


Plus d'informations sur


  • la tâche image ici.
  • les jars supplémentaires à installer ici et ici.
  • les critères fichiers ici.
  • les "types de ressources" fichiers ici.
  • Ant ici.