Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copier une image

2 réponses
Avatar
enthalpie
Bonjour,
J'ai tenté de copier une image (jpg) comme je copiais un fichier texte avec une bete commande
while (<LIRE>) {print ECRIRE $_;}

Le fichier créé fait bien la bonne taille mais n'est pas lisible comme une image pour windows/paint etc. (bien qu'il l'ouvre en tant que tel puisque l'extension est .jpg).
Apparement, le header n'est pas conforme.
Est ce qu'il s'agit d'un problème de caractères spéciaux ?

2 réponses

Avatar
jl_morel
Dans l'article ,
a dit...

J'ai tenté de copier une image (jpg) comme je copiais un fichier texte avec


une
bete commande
while (<LIRE>) {print ECRIRE $_;}

Le fichier créé fait bien la bonne taille mais n'est pas lisible comme une
image pour windows/paint etc. (bien qu'il l'ouvre en tant que tel puisque
l'extension est .jpg).
Apparement, le header n'est pas conforme.
Est ce qu'il s'agit d'un problème de caractères spéciaux ?




Oui. Il faut ouvrir vos fichiers en mode binaire.
Voir la faq :

http://www.bribes.org/perl/docfr/perlwin32faq8.html#LA325A6F1

Il est préférable d'utiliser la fonction read plutôt que <LIRE> car vous
lisez alors tout le fichier d'un coup en mémoire (il n'y a pas de "ligne"
dans un fichier binaire).

Si vous tenez à utiliser l'opérateur < >, alors vous pouvez fixer la taille
du tampon avec la variable $/. Voir :

http://www.bribes.org/perl/docfr/perlvar.html#LFFBFBD54

HTH

--
J-L.M.
http://www.bribes.org/perl
Avatar
enthalpie
jl_morel a écrit le 23/08/2008 à 10h49 :
Dans l'article ,

a dit...

J'ai tenté de copier une image (jpg) comme je copiais un fichier texte
avec



une
bete commande
while (<LIRE>) {print ECRIRE $_;}

Le fichier créé fait bien la bonne taille mais n'est pas lisible
comme une
image pour windows/paint etc. (bien qu'il l'ouvre en tant que tel puisque
l'extension est .jpg).
Apparement, le header n'est pas conforme.
Est ce qu'il s'agit d'un problème de caractères spéciaux
?





Oui. Il faut ouvrir vos fichiers en mode binaire.
Voir la faq :

http://www.bribes.org/perl/docfr/perlwin32faq8.html#LA325A6F1

Il est préférable d'utiliser la fonction read plutôt que
<LIRE> car vous
lisez alors tout le fichier d'un coup en mémoire (il n'y a pas de
"ligne"
dans un fichier binaire).

Si vous tenez à utiliser l'opérateur < >, alors vous pouvez
fixer la taille
du tampon avec la variable $/. Voir :

http://www.bribes.org/perl/docfr/perlvar.html#LFFBFBD54

HTH

--
J-L.M.
http://www.bribes.org/perl


Exactement ce que je voulais savoir, merci beaucoup.