Ce snippet permet de lire et de dessiner (a l'aide de drawdot) l'image pixel par pixel.
C'est evidemment assez long (enfin tt depend de la taille de l'image) , mais l'interet est ailleurs :)
On peut ensuite convertir son image targa soit en bmp, soit en jpeg
ah oui, j'oubliai
Pour l'instant ça ne lit que les targa 24bits (les plus communes)
J'étendrai peut être les fonctionnalités si ça vous interresse
Source / Exemple :
alias tga {
var %tga $+(",$$sfile($+($left($mircdir,1),:\*.tga),Selectionnez l'image à lire,&Selectionner),")
bread %tga 0 13 &signature
if ($calc($bvar(&signature,1,1) + $bvar(&signature,2,1) + $bvar(&signature,9,1)) != 0) { echo -a Ce fichier n'est pas une image TARGA valide | halt }
bread %tga 16 1 &bpp
if ($bvar(&bpp,1,1) != 24) { echo -a Cette image n'est pas codée en 24 bits/pixels | halt }
bread %tga 12 16 &taille
var %lx $bvar(&taille,1,1) , %ly $bvar(&taille,2,1) | var %hx $bvar(&taille,3,1) , %hy $bvar(&taille,4,1)
var %largeur $calc(256 * %ly + %lx) | var %hauteur $calc(256 * %hy + %hx)
bread %tga 18 $calc(%largeur * %hauteur * 3) &donnees
window -CBk0pf +lt $+(@,$nopath(%tga)) -1 -1 %largeur %hauteur
echo -a ---------------------------------------------------------
echo -a Affichage de %tga en cours...
var %ticks $ticks
var %cpt 1 , %l 1
while (%hauteur > 0) {
if (%cpt != 1) { inc %cpt 3 }
while (%l < %largeur) {
var %pixel = $bvar(&donnees,%cpt,3)
tokenize 32 %pixel
drawdot -r $+(@,$nopath(%tga)) $rgb($3,$2,$1) 1 %l %hauteur
; niveau de gris
;drawdot -r $+(@,$nopath(%tga)) $rgb($2,$2,$2) 1 %l %hauteur
inc %cpt 3
inc %l
}
var %l 1
dec %hauteur
}
echo -a Affichage effectué en $calc($calc($ticks - %ticks) / 1000) sec
echo -a ---------------------------------------------------------
var %rep $input(Voulez-vous convertir cette image en bitmap (yes) en jpeg (no) ou ne rien faire (cancel) ?, vn,Conversion)
if (%rep == $yes) { drawsave $+(@,$nopath(%tga)) $replace(%tga,.tga,.bmp) | echo -a Image $replace(%tga,.tga,.bmp) crée ! }
elseif (%rep == $no) { drawsave -q100 $+(@,$nopath(%tga)) $replace(%tga,.tga,.jpg) | echo -a Image $replace(%tga,.tga,.jpg) crée ! }
else { halt }
}
Conclusion :
rien d'autre à dire !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.