Connexion

Récupérer mon mot de passe

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 21 le Jeu 17 Oct 2013, 13:40
Derniers sujets
Flux RSS



Flag Counter
Partenaires

La commande externe PNG2HEX

Voir le sujet précédent Voir le sujet suivant Aller en bas

La commande externe PNG2HEX

Message par Sachadee le Jeu 31 Oct 2013, 18:44

La commande PNG2HEX.EXE vous permet de décompacter sous forme Hexadecimal un fichier de type : [GIF,BMP,JPEG,PNG]
et d'avoir en sortie un fichier en mode tesxte (ASCII) Avec la valeur de chaque pixel.

Vous pouvez ensuite creer vos filtres de transformation de l'image, vos filtres d'affichage ASCII (ASCIIART), ou n'importe quel traitement utile
sur une image.

Utilisation : PNG2HEX.EXE [Nom_du_fichier{GIF,BMP,JPEG,PNG}]

Sortie : Testpixel.txt

Pendant le temps du traitement de PNG2HEX.EXE sur votre image l'image s'affiche à l'écran.

La première ligne de ce fichier (Testpixel.txt)  contient les éléments pour la reconstruction futur du fichier (taille du fichier, etc..) après traitement.

Si votre but n'est pas de reconstruire un fichier graphique après traitement (AsciiArt par exemple) vous pouvez supprimer cette ligne.

L'utilité de cette ligne est décrite dans la CONVENTION DE CRÉATION DE FILTRE


Exemple d'utilisation possible : Vous voulez une representation ASCII de ce fichier image :



Vous la traiter avec PNG2HEX.EXE qui va vous générer le fichier "testpixel.txt" contenant toutes les valeurs Hexdécimal de votre WWF.GIF
sous cette forme :

testpixel.txt

Code:
87;70;wwf.png;6090;By SachaDee -2013-
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
...
Vous voyez que sur la première ligne il y a les infos importantes pour une reconstruction (éventuel) dans le futur.
Si vous créer un filtre pour agrandir ou rétrecir une image il est clair que ces infos devront être modifié en fonction.

Vous voyez également que même que nous avons travailler sur un fichier [GIF] le nom de fichier pour la reconstruction sera du [PNG]

Un POINT IMPORTANT ! Vous allez me demander pourquoi y a t'il 4 valeurs en sortie (FF FF FF FF) alors que
nous travaillons sur 3 bits (R G B) en fait le dernier bits est là pour le traitement de la transparence de l'image (PNG)
par défaut je la laisse à FF (normal) si vous voulez utiliser la transparence sur votre image positionnez cette valeur à 00 (FFFFFF00)


A voir dans les versions futures si l'on permet la reconstruction en d'autres format. [Edit : Implementé V1.3]

Des commandes externes pour l'aide à la création de filtres sont en cours de réalisation Un visualiseur rapide entre autre...


Donc maintenant que nous avons ce fichier "Testpixel.txt" qui contient toutes les valeurs Hexa de chaque pixel de notre image initiale et que nous connaissons la taille de l'image (1ere "ligne de testpixel.txt") 87x70 dans notre cas, nous pouvons imaginer une petite routine en BAT qui
va récupérer chaque pixel et faire un traitement dessus.

Dans notre cas nous voulons créer une representation ASCII de notre fichier Noir et Blanc (j'ai fait simple pour commencer) donc il nous suffit
de rechercher toutes les valeurs Hexa qui corresponde à la couleur Blanche (FFFFFFFF) et de la remplacer par un "." dans notre cas.
Tout ce qui n'est pas égal à Blanc sera intèrpreter comme Noire donc remplacer avec un "x".

Il faut naturellement compter la valeur de pixel en X pour reconstruir l'image (logique) dans ce cas.

Voici le premier filtre de traitement -->Ascii qui fait cela à merveille

Hex2Ascii-.x.bat

Code:
:::Hex2Ascii-.X.bat
:::By SachaDee 2013
@ECHO OFF
setlocal enabledelayedexpansion
mode 100,80

if exist tempo.txt del tempo.txt
set /p $Ligne0=<testpixel.txt
set $ligne0=%$ligne0:;= %
set $c=1
for %%a in (%$ligne0%) do (if !$c! equ 1 set "$XPos=%%a"
                           if !$c! equ 2 set "$YPos=%%a"
                            set /a $c+=1)


set $c=0
set $x=0
set $pix=
set $ligne=

for /f "delims=" %%a in (testpixel.txt) do (set $#=%%a
              if !$c! NEQ 0 (
                if !$x!==!$Xpos! (if defined $ligne (echo !$ligne:~1!>>tempo.txt
                                                     set $ligne=)
                                  set /a $x=0)
                                  if not !$x!==!$Xpos! (set $pix=X
                                                        if !$#!==FFFFFFFF set $pix=.
                                                        set $ligne=!$ligne!!$pix!)
                                   set /a $x+=1)
                              set /a $c+=1)


echo.
type tempo.txt

pause
mode 80,40
endlocal

A l'éxecution de ce filtre il sera créer un fixhier tempo.txt qui va contenir la representation ASCII de notre GIF initiale.




Voilà vous venez de faire le premier pas dans un monde sans limite qu'est le traitement de l'image.


Nous allons aborder dans le prochain sujet la reconstruction d'une image modfié....


Par @SachaDee (c) 2013

_________________
@SachaDee
avatar
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

http://bbat.forumeiro.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum