Copier un jpg en c++

Nagalta Messages postés 14 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 7 octobre 2006 - 19 sept. 2006 à 14:22
cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011 - 15 févr. 2011 à 10:37
Bonjour, je souheterai copier une image jpg dans un autre dossier,
pour le moment jai cela :

<dir>

ifstream exoi("F://DSC0056.JPG"); // le fichier en lecture

ofstream exoo("F://ESSAI.JPG"); // le fichier où écrire

string S;

string R;

for (getline(exoi,S) ; !exoi.eof() ; getline(exoi,S)) R.append(S).append("\n");

exoo << R << endl;

Mais biensur, cela ne marche pas... jai peur que cela ne soit pas prevu pour les images....

Jaurrai besoin egalement de faire des copies dautres fichiers... alors si vous aviez une solution pour copier ninporte quel type de fichier....

Merci de votre aide

 

Yves

merci de votre aide

</dir>

8 réponses

BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
19 sept. 2006 à 14:56
Aucune fonction spécifique au type de fichiers (heureusement).
En C: fopen(), fread(), fwrite(), fclose()
En C++: ifstream, ofstream, read(), write()

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
19 sept. 2006 à 15:18
je ne sais pas si cela a une influence mais attention au chemin:
F:\\DSC0056.JPG

et non pas

F://DSC0056.JPG

Bob...
"La chance accorde ses faveur aux esprits avertis..."
0
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
19 sept. 2006 à 15:50
GetLine pour un fichier binaire?? c'est un peu louche ca...
0
Nagalta Messages postés 14 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 7 octobre 2006
19 sept. 2006 à 15:59
Merci bcp, grace a tes infosm jai su ou chercher et trouve cela :

  char * buffer;
  long size;

  ifstream infile ("test.txt",ifstream::binary);
  ofstream outfile ("new.txt",ofstream::binary);

  // get size of file
  infile.seekg(0,ifstream::end);
  size=infile.tellg();
  infile.seekg(0);

  // allocate memory for file content
  buffer = new char [size];

  // read content of infile
  infile.read (buffer,size);

  // write to outfile
  outfile.write (buffer,size);
 
  // release dynamically-allocated memory
  delete[] buffer;

  outfile.close();
  infile.close();

Maintenant, un autre petit probleme se pose...
jouvre/enregistre trop de fichier je suppose car le script plante avant la fin de sa tache... les fichiers sont cree dans le dossier voulu, la plupart dentre eux sont ok mais les derniers restent a 0 ko... je suppose que cest du a une surcharge de la memoire... comment eviter cela ? merci bcp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
19 sept. 2006 à 17:34
Faudrait voir ton code
0
Nagalta Messages postés 14 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 7 octobre 2006
19 sept. 2006 à 17:46
Ben en faite le code entourant ce que je viens de poster nest ni plus ni moins que un script pour lister les fichiers... je suppose que cest la repetition de ce dernier code (lecture copie fichiers0 avec des read et write qui font sauter la memoire.... je souhaites enregister jusqua 200 images de 2mo...
0
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
19 sept. 2006 à 18:03
#include <stdio.h>
int copieFichier(charconst * const source, charconst * const destination)
{
FILE* fSrc;
FILE* fDest;
char buffer[512];
int NbLu;

if((fSrc=fopen(source, "rb")) == NULL)
{
return -1;
}

if((fDest=fopen(destination, "wb")) == NULL)
{
fclose(fSrc);
return -2;
}

while((NbLu=fread(buffer, 1, 512, fSrc)) != 0)
{
fwrite(buffer, 1, NbLu, fDest);
}

fclose(fDest);
fclose(fSrc);
return 0;
}
0
cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011
15 févr. 2011 à 10:37
#include <cstdlib>
#include 
#include <fstream>
#include <exception>

static const unsigned int BUFFER_SIZE = 4096;

int main(int argc, char** argv)
{
  if (argc != 3)
    {
      std::cerr << "using: " << argv[0] << " src dst" << std::endl;
      return (EXIT_FAILURE);
    }

  try
    {
      std::ifstream in(argv[1], std::ifstream::binary);
      std::ofstream out(argv[2], std::ofstream::binary);

      char buffer[BUFFER_SIZE];

      do
        {
          in.read(buffer, sizeof(buffer));
          std::streamsize size = in.gcount();
          out.write(buffer, size);
        }
      while (!in.eof());

      out.close();
      in.close();
    }
  catch (const std::exception& err)
    {
      std::cerr << "error: " << err.what() << std::endl;
      return (EXIT_FAILURE);
    }
  return (EXIT_SUCCESS);
}
0
Rejoignez-nous