Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2011, 07:25
Apeiron
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 13 años, 5 meses
Puntos: 0
Trabajando con archivos

Buenas a todos, estoy haciendo un programa que coje dos fotos y las junta en un archivo final.jpg. Luego abre final.jpg ,para leer la foto que esta al final del archivo y crear una foto nueva, con la imagen 2.El problema es que aun teniendo el mismo tamaño y todo la foto no se ve dice que puede estar dañado. Os adjunto el codigo a ver si me podeis hechar un cable. Un saludo y gracias!

Código:
#include<iostream>
#include<fstream>

using namespace std;

int main()
{
    //Declaramos los buffers y sus tamaños
    char*buffer;
    int length;
    char*buffer2;
    int length2; 
    char*buffer3;
    //Almacenamos la foto en un buffer1 con su length1
    ifstream in;
    in.open("C:/foto.jpg",ios::binary);
    
    
				  in.seekg (0, ios::end);
				  length = in.tellg();
				  in.seekg (0, ios::beg);
  				  buffer = new char [length];
				  in.read (buffer,length);
				  in.close();
      //Almacenamos la foto2 en buffer2 con su length2
      ifstream in2;
      in2.open("C:/foto2.exe",ios::binary);
      
                  in2.seekg (0, ios::end);
				  length2 = in2.tellg();
				  in2.seekg (0, ios::beg);
				  buffer2 = new char [length2];
				  in2.read (buffer2,length2);
				  in2.close();
				  
      //Guardamos las dos fotos en un archivo final, una detras de otra
      ofstream out;
      out.open("C:/final.jpg",ios::binary);
      out.write(buffer,length);
      out.seekp (length);
      out.write(buffer2,length2);
      out.close();
      
      //Abrimos el archivo final,nos posicionamos en la 2 foto,la almacenamos
      //en un buffer y la guardamos en final.jpg
      ifstream in3;
      in3.open("C:/final.jpg",ios::binary);
      in3.seekg(length);
      in3.read(buffer3,length2);
      in3.close();
      
      ofstream out2;
      out2.open("C:/foto3.exe",ios::binary);
      out2.write(buffer3,length2);
      out2.close();
      return 0;
      }