decodage d'image avec MIME::Base64
bonjour à tous, voila, mon but est de récupérer le code source d'une image d'un email envoyé en texte brut.
de décoder tout ca et de le mettre ds un fichier .gif, pour reproduire l'image originale.
je vous met ma fonction et je vais vous la détailler.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| sub createImage(){
my $m = shift; # récupération du mail
my $image = join '', @$m;
my $name ;
$name = time();
if($image =~ /filename=\"(.*)+\.(gif|jpg)\"/){ #expression qui me permet de récupérer l'extension de l'image
$name = $name.'.'.$2; # creation d'un nom unique pour l'image
if(!-e '/blog/images'){
mkdir ("c:/easyphp/www/blog/images",0755) || print ("Impossible de créer le répertoire \n");
}
open(IMAGE,">blog/images/$name");
if($image =~ m/filename=\"(.*)+\.(.*)\"\n\n(.*)\n\n------=/s){ #ici je récupére le code source de l'image
my @decoded = MIME::Base64::decode($3); #je décode la source
foreach my $lines (@decoded){
print IMAGE $lines; #et je copie dans le fichier de type gif l'image
}
close IMAGE;
}
}
return $name;
} |
donc la copie dans le fichier le decodage s'effectue corretement, seulement a la fin j'ai une image déformée. (l'image ne peut être affichée car elle contient des erreures).
cela dit la taille de l'aimge est correctement récupérée, j'en conclu que je suis sur la bonne voie, mais je me demande si le format du code source de l'image est encore respecter après l'expressino régulièere qui a pour but de récupérer ce code source. car en regardant dans le code source du mail dans outlook, je vois qu'il y a des espace au bout de chaque ligne, je me demande si c'est respecté avec l'expression.
merci de me dire si vous avez des conseils pour eviter tout probleme lors du décodage, c'est urgent et ca fait un petit moment que je suis déjà dessus.
P.S : le plus etrange c'est qd j'ouvre les 2 image ds un bloc note, je remarque que c le meme contenu, mais dans celui que je créer il y a des sauts de ligne en trop ce qui fausse tout.
merci beaucoup