Copier un jpg en c++

Messages postés
14
Date d'inscription
lundi 1 décembre 2003
Statut
Membre
Dernière intervention
7 octobre 2006
-
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 février 2011
-
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

Messages postés
15213
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 janvier 2022
101
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
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
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..."
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

GetLine pour un fichier binaire?? c'est un peu louche ca...
Messages postés
14
Date d'inscription
lundi 1 décembre 2003
Statut
Membre
Dernière intervention
7 octobre 2006

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
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

Faudrait voir ton code
Messages postés
14
Date d'inscription
lundi 1 décembre 2003
Statut
Membre
Dernière intervention
7 octobre 2006

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...
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

#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;
}
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 février 2011

#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);
}