[..] Récuperer une image en String

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#21

Message par Iste »

TommyDDR a écrit :J'ai une "Demi-Solution"

J'ai réussi à afficher tous les caractères sauf le 0x00
Bien joué ! Avec cette "solution" il ne manque a ma chaine renvoyé que les chr(0) !
ce qui veut donc dire que c'est tout ce qui me reste a résoudre !
Merci TommyDDR, du coup je me penche sur une fonction ConsoleWrite() plus souple, peut etre avec les dll windows
Signez ici
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Récuperer une image en String

#22

Message par ani »

Bonjour, bonjour, si je lance ce bout de code, j'obtiend tout les caractères, même les NULL.
Alors qui ne devrait pas, vu le code ci-dessous. Ouverture en mode binaire!! :shock:

Code : Tout sélectionner

$Open = fileopen("img.bmp",16)
$Read = fileread($Open)
fileclose($Open)
ConsoleWrite($Read)
Mais si j'ajoute un retour à la ligne, la valeur retourné sera bien en hexa et vous ?

Code : Tout sélectionner

$Open = fileopen("img.bmp",16)
$Read = fileread($Open)
fileclose($Open)

ConsoleWrite($Read & @Lf)
je parle juste du debugger de scite et non pas Le texte de message Box ;)
Version : v3.3.6.1
merci ;)
bugAhu
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Récuperer une image en String

#23

Message par TommyDDR »

Perso ca ne marche pas avec ta technique, ca s'arrête au 1er NULL.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Récuperer une image en String

#24

Message par sylvanie »

kikou,
ça semble marcher quand on affiche caractère par caractère avec binarymid :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#25

Message par Iste »

C'est le plus proche résultat que j'ai pu voir ! merci de l'astuce, je creuse cette voie
Mais il reste encore quelque différences qui sont de trop :s
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une image en String

#26

Message par Tlem »

Iste a écrit :comme je l'ai déja dis plusieurs fois aussi cela est tout a fait possible je n'ai aucun mal a le faire en ne passant pas par autoit. Si j'ouvre le fichier avec scite, je peux copier dans mon presse papier tout le code. Un autre programme peut tout me renvoyer dans la console.
Oui parce que le code est 'interprété' par le logiciel de visualisation.Scite, notepad, etc ...
Les caractères spéciaux sont remplacés par un code équivalent et 'visible', alors que la console interprète le caractère ...
Iste a écrit :Gné ? je ne veux pas toucher a l'encodage, je veux juste renvoyer ma fichu chaine de caractère sans la modifier en quoi que ce soit
Cela peut fonctionner, mais sans le caractère NUL. ^^
Comme il est NUL, la console (ou n'importe qu'elle sortie directe) ne l'affiche pas ...
Iste a écrit :
Tlem a écrit :Je suppose que tu parle d'une page HTML. :roll:
Non, une page web, il n'y a pas une seule goute de HTML dedans... C'est juste une fichu image avec en plus en haut les header http qui vont bien.
:shock:
Iste a écrit :
Tlem a écrit :Lesquels par exemple ?
Sous quel format sont les images ?
PHP, avec tout type d'image. C'est d'ailleurs une "imitation" de PHP en autoit que je cherche a reproduire.
OK, mais dans ce cas par quoi sont remplacé les caractères NUL ?
D'après ta capture d'écran, je dirait par un espace. ^^
Iste a écrit :Bref je vous remercie tous d'essayer de m'aider, mais si je vous dis que c'est possible c'est que j'ai mes raisons ! J'pas toujours envie de tout étaler simplement par manque de temps déja, puis aussi car j'veux pas forcément embrouiller tout le monde avec des info inutiles. Mais merci de ne plus me dire que c'est impossible !
Je maintient qu'en l'état, ce n'est pas possible, à cause du caractère NUL.
Il faut donc remplacer celui-ci et tout autre caractère qui pose problème par autre chose afin de l'afficher dans une console ...

Je pense que ce code devrait produire en sortie l'équivalent de ta capture de sortie PHP :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#27

Message par Iste »

Tlem a écrit : :shock:
Ben oui, il y a juste le header suivit du code de l'image, rien d'autre
Tlem a écrit :OK, mais dans ce cas par quoi sont remplacé les caractères NUL ?
il n'est pas remplacé, vu qu'il est bien envoyé au navigateur. J'ai essayer de récup la chaine donné par PHP, et je confirme qu'il s'agit bien de chr(0)
Tlem a écrit :Je pense que ce code devrait produire en sortie l'équivalent de ta capture de sortie PHP :
En effet, visuellement c'est tres proche, et c'est l'un des premier truc que j'ai tenté ^^ mais les " " ne sont pas des NULL, donc marche pô :/

De plus, comme le prouve le code de sylvanie (du moins il semblerait), autoit en est tout a fait capable !
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une image en String

#28

Message par Tlem »

Et ça ?
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#29

Message par Iste »

Bien essayé, j'avais tenté un truc du genre, mais le résultat est exactement le meme que pour le code de sylvanie

Je continu de chercher de mon coté car je sent qu'on avance !
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une image en String

#30

Message par Tlem »

ani a écrit :Bonjour, bonjour, si je lance ce bout de code, j'obtiend tout les caractères, même les NULL.
Alors qui ne devrait pas, vu le code ci-dessous. Ouverture en mode binaire!! :shock:
C'est effectivement étrange. Mais en ce qui concerne le sujet, la réponse ne serait-elle pas dans l'aide de la commande ConsoleWrite ?
- 1ere remarque pour Iste
- 2iem remarque pour ani.
ConsoleWrite

Remarks

The purpose for this function is to write to the STDOUT stream. Many popular text editors can read this stream. Scripts compiled as Console applications also have a STDOUT stream.

This does not write to a DOS console unless the script is compiled as a console application..

Characters are converted to ANSI before being written.

Binary data is written as-is. It will not be converted to a string. To print the hex representation of binary data, use the String() function to explicitly cast the data to a string.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Récuperer une image en String

#31

Message par timmalos »

Bon alors je soutiens que ce que tu veux faire Iste n'est pas possible pour toutes les raisons citées plus haut. Tu ne pourras jamais faire ce que tu souhaite, et je vais t'expliquer pourquoi en me basant sur php que tu cites (j'ai fais mes recherches en partant de ce coté là contrairement à vous qui etes rester en Autoit.)

Hmmm bon pour comprendre PHP utilise un code ressemblant à ca:

Code : Tout sélectionner

<?php

$my_img = imagecreate( 200, 80 );//On cree l'image de dimension 200x80
$background = imagecolorallocate( $my_img, 0, 0, 255 );On met des couleurs, c'est plus joli
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
$line_colour = imagecolorallocate( $my_img, 128, 255, 0 );
imagestring( $my_img, 4, 30, 25, "Tlem ne comprend rien",
  $text_colour );//une petite chaine de caractere?
imagesetthickness ( $my_img, 5 );
imageline( $my_img, 30, 45, 165, 45, $line_colour );

header( "Content-type: image/png" );//Header indiquant au navigateur qu'il doit afficher une image et non une page html
imagepng( $my_img );
imagecolordeallocate( $line_color );
imagecolordeallocate( $text_color );
imagecolordeallocate( $background );
imagedestroy( $my_img );
?>
 
Bon rien de bien compliquer on utilise la librairie GD de php, on aurait egalement pu utiliser ue image déjà existante au lieu de le creer mais le problème n'est pas là.
Le problème comme l'a deja souligné Iste, c'est le
header( "Content-type: image/png" ) Ce que Iste ne sait pas, c'est qu'en létat, ce Content Image/png est un transfert qui s'effectue en mode BINAIRE c'est à dire que quand PHP envoit le resultat de ses calculs au navigateur, c'est en mode BINAIRE qu'il opère. Et ensuite c'est le navigateur qui affiche l'image, juste le navigateur (Si pas convancu essaye Lynx) C'est à dire que le boulot de conversion doit être effectué PAR l'outil qui affiche, donc toi tu souhaites que ce soit la console. Si tu vire ce header, tu le verras tres bien, Firefox n'affichera plus l'image mais son code représenté que Firefox aura traduit de binaire en decimal, donc si toi tu veux faire afficher l'image par la msgbox, il faut la lui transmettre en binaire, et lui dire de l'afficher en decimal, plutot hardcore non?




Liens:
[En] http://en.kioskea.net/contents/courrier ... /mime.php3
[En] http://www.thesitewizard.com/php/create-image.shtml
[En] http://www.w3.org/Protocols/rfc2616/rfc ... l#sec14.17
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#32

Message par Iste »

Le problème n'est pas le header, je sais tres bien comment ca marche et m'en sort tres bien.
Encore une foi, le problème est JUSTE la réécriture du code de l'image.
Je sais tres bien sous quel forme PHP renvoi les images vu que je compare depuis le début mes résultat avec les siens pour savoir ou j'en suis.
voici la preuve qu'il n'y a que quelque petite dif
Image
je ne sais pas encore trop a quoi correspondent ces erreurs, et c'est mon seul problème.
Le header je peux le rajouter sans souci

Cela est possible et je viens meme de réussir !

Voici mon code

Code : Tout sélectionner

ConsoleWrite("Content-type: image/png; charset=UTF-8" & @CRLF & @CRLF)

    $file="cmdp.png"
    $length=FileGetSize($file)
    $hnd_file=FileOpen($file,16)
    If $hnd_file = -1 Then Exit 1

    $contenu=FileRead($hnd_file,$length)

    FileClose($hnd_file)

    For $ind = 1 To $length
        ConsoleWrite(BinaryMid($contenu,$ind,1))
    Next
Ce n'est en fait que celui de sylvanie avec un header en plus, et voici mon image
Image
un simple carré noire. Simple, car si il contient des caractère un peu trop tordu, Mon script n'est plus capable de les renvoyer.
Je suis sur qu'il y a une solution, et je trouverai !

Edit : Je retire ce que j'ai dit, cela fonction avec toutes les images a première vu, je pousse les testes un peu plus loin avant de passer en [R]

Edit : Ca semble fonctionner a merveille avec les png et les jpg, mais pas avec les bmp :/ continu mes tests !
Signez ici
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Récuperer une image en String

#33

Message par timmalos »

Donc ta solution confirme ce que j'ai dis non? Tu as indiqué a la console que tu envoyais une image binaire, ce que je pensais impossible ;)
si toi tu veux faire afficher l'image par la msgbox, il faut la lui transmettre en binaire, et lui dire de l'afficher en decimal, plutot hardcore non?
Mais apparemment c'est possible :p


Pour les bmp, je pense qu'il faudra changer ton content en fonction de ton image:
image/png
image/gif
image/tiff
image/bmp
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#34

Message par Iste »

Pour le content ouais j'ai essayé, mais sur un bmp, je n'avais que les 20dernière ligne de l'images environ

Comme dis, je continu mes test pour trouver ce qui ne passe pas ;)

encore merci
Signez ici
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Récuperer une image en String

#35

Message par SagePourpre »

Peut-être cela fonctionnerait-il en base64 ...

Il existe même un UDF sur les forums anglais pour l'encodage
et le décodage ici : http://www.autoitscript.com/forum/index ... opic=76976
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une image en String

#36

Message par Tlem »

Hummmm, en tout cas, chez moi, le code proposé par Iste ne fonctionne pas.
Si je prend mon fond d'écran en PNG et que je l'édite avec Scite, je n'ai pas du tout la même chose dans la console de sortie du code ... :shock:
Ou alors j'ai loupé quelque chose. :cry:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récuperer une image en String

#37

Message par Iste »

Pour la base64 j'ai essayé a de nombreux essai sans obtenir le moindre résultat :s

Sinon Tlem, en effet il me reste quelque différence sur les grosse image (pour mon petit carré noir le code est identique)
Mais les images renvoyées fonctionne quand meme.
Pour faire mes test, j'utilise mon server IIS en lui indiquant mon script en tant que CGI
Signez ici
Répondre