Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Trabajando con archivos

Estas en el tema de Trabajando con archivos en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/11/2011, 07:25
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 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;
      }
  #2 (permalink)  
Antiguo 20/11/2011, 11:15
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Trabajando con archivos

Todabia estoy aprendiendo C++, y ni idea de esa funcion xD. Pero por ahi es ese error, no sera por que lo guardas en .exe?

Última edición por Sevenx3; 20/11/2011 a las 11:30
  #3 (permalink)  
Antiguo 20/11/2011, 12:51
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Trabajando con archivos

Proba esto pero, con archivos pequeños....solo para poder ver que se pasa y cual seria el problema...

Saludos
  #4 (permalink)  
Antiguo 20/11/2011, 13:40
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Trabajando con archivos

Oops! Perdonar los archivos de entrada y salida son todos en .jpg, es que tambien probe con ejecutables y tampoco iva. Poniendo todo.jpg no va, sale el visor de imagenes de windows pero dice que esta dañado.


Nadie sabe por que puede seeeeer?

Última edición por Apeiron; 21/11/2011 a las 09:21
  #5 (permalink)  
Antiguo 21/11/2011, 17:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Trabajando con archivos

Código C++:
Ver original
  1. #include<iostream>
  2. #include<fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     //Declaramos los buffers y sus tamaños
  9.     char*buffer;
  10.     int length;
  11.     char*buffer2;
  12.     int length2;
  13.     char*buffer3;
  14.     //Almacenamos la foto en un buffer1 con su length1
  15.     ifstream in;
  16.     in.open("c:\\a1.jpg",ios::binary);
  17.                   in.seekg (0, ios::end);
  18.                   length = in.tellg();
  19.                   in.seekg (0, ios::beg);
  20.                   buffer = new char [length];
  21.                   in.read (buffer,length);
  22.                   in.close();
  23.       //Almacenamos la foto2 en buffer2 con su length2
  24.       ifstream in2;
  25.       in2.open("c:\\a2.jpg",ios::binary);
  26.      
  27.                   in2.seekg (0, ios::end);
  28.                   length2 = in2.tellg();
  29.                   in2.seekg (0, ios::beg);
  30.                   buffer2 = new char [length2];
  31.                   in2.read (buffer2,length2);
  32.                   in2.close();
  33.                  
  34.       //Guardamos las dos fotos en un archivo final, una detras de otra
  35.       ofstream out;
  36.       out.open("c:\\a3.jpg",ios::binary);
  37.       out.write(buffer,length);
  38.       //out.seekp (length);
  39.       out.write(buffer2,length2);
  40.       out.close();
  41.      
  42.       //Abrimos el archivo final,nos posicionamos en la 2 foto,la almacenamos
  43.       //en un buffer y la guardamos en final.jpg
  44.       buffer3 = new char[length2];
  45.       ifstream in3;
  46.       in3.open("c:\\a3.jpg",ios::binary);
  47.       in3.seekg(length, ios::beg);
  48.       in3.read(buffer3,length2);
  49.       in3.close();
  50.      
  51.       ofstream out2;
  52.       out2.open("c:\\a33.jpg",ios::binary);
  53.       out2.write(buffer3,length2);
  54.       out2.close();
  55.       return 0;
  56.       }

Asi si funciona!!
  #6 (permalink)  
Antiguo 21/11/2011, 18:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Trabajando con archivos

Muchisimas gracias sam90 , de verdad, me salvaste!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:19.