Copie d'une image via read()

Copie d'une image via read() - Perl - Programmation

Marsh Posté le 08-03-2005 à 23:15:40    

 
 
Salut à tous,
 
j'ai un petit problème avec perl. J'essaie de copier une image en lisant
l'originale avec read() et en écrivant le tampon dans un nouveau fichier.
ça marche très bien pour les fichiers de type textes, mais pour les images
ou tout autre type de documents qui ne sont pas du texte, ça ne fonctionne
pas.
 
Voici le code :
 
 
#!/usr/local/bin/perl
 
my $fichier = "fisichella.jpg";
my $size = -s $fichier;
my $tampon;
my $taillelue;
open(FIC, "fisichella.jpg" );
$taillelue = read(FIC, $tampon, $size);
chomp($tampon);
close(FIC);
open(FIC2,">>fisicho.jpg" );
print(FIC2 $tampon);
close(FIC2);
 
 
à noter que l'image de base pèse 13'267 octets, et que celle générée par
ce code pèse 13'310 octets, je me demande bien d'où proviennent ces octets
supplémentaires.
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 08-03-2005 à 23:15:40   

Reply

Marsh Posté le 09-03-2005 à 09:17:35    

questions : pourquoi fais-tu un chomp() ?
pourquoi concatènes-tu en utilisant ">>" lors de l'ouverture de fichier ? Peut-être que les octects en trop sont dus à des anciens tests infructueux
 
Sinon il y a une manière plus élégante de recopier le contenu d'un fichier :

Code :
  1. open FIC, "fisichella.jpg";
  2. open FIC2, ">fisicho.jpg";
  3. print FIC2 <FIC>;
  4. close FIC2;
  5. close FIC;

Reply

Marsh Posté le 09-03-2005 à 16:11:32    

Réponses : euh..par erreur  :whistle:  
 
Sinon merci beaucoup pour ton aide mais malheuresement, le problème reste le même, ça me génère toujours une image de 13'310 octets qui reste illisible, pareil avec tout autre type de fichier. Pour infos, j'utilise ActivePerl sous windows, au cas où ça pourrait jouer là-dedans mais je ne pense pas.

Reply

Marsh Posté le 09-03-2005 à 17:05:39    

effectivement avec activeperl cela ne marche pas :/ moi ca marche bien avec perl 5.005 sous solaris

Reply

Marsh Posté le 09-03-2005 à 19:50:47    

binmode(FIC);
binmode(FIC2);

Reply

Marsh Posté le 09-03-2005 à 20:08:14    

aaah merci pospos, j'ignorais cette commande.
 
Merci beaucoup, ça marche bien maintenant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed