SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Ithilien en Miércoles 7 de Marzo de 2007, 11:10

Título: Convertir Jpg A Bmp
Publicado por: Ithilien en Miércoles 7 de Marzo de 2007, 11:10
Hola,

    alguien puede decirme como se realiza ese procedimiento de conversión?

Gracias
Título: Re: Convertir Jpg A Bmp
Publicado por: JuanK en Miércoles 7 de Marzo de 2007, 16:31
existen librerias especializadas para tal fin.

Un truco para salir rapido del problema es cargar el jpeg  en un objeto TBitmap y ya una vez cargado usar el metodo SaveToFile del objeto TBitmap e indicarle que haga save como archivo bmp.
Título: Re: Convertir Jpg A Bmp
Publicado por: Ithilien en Sábado 10 de Marzo de 2007, 10:47
Hola JuanK,

    muchas gracias por contestar. Efectivamente esa opción sería la correcta. De todas formas me interesaba evitar el usar ficheros, porque lo que quería era guardar en la base de datos la imagen bmp, por lo que al final he utilizado la opción Stream. Eso, junto con código de una página japonesa / china / koreana, me ha servido para resolver el problema.

    Por si alguien esta interesado también en la conversión de imágenes JPG a BMP, pongo el código para que no tengan que buscar más, que siempre se agradece:

Código: Text
  1.  
  2.                 //Se carga la imagen
  3.                 TJPEGImage *j = new TJPEGImage;
  4.                 j->LoadFromFile( OpenPictureDialogo->FileName );
  5.                 j->DIBNeeded();
  6.  
  7.                 //Se redimensiona
  8.                 Graphics::TBitmap * bm = new Graphics::TBitmap();
  9.                 bm->Width = DBImagen->Width;
  10.                 bm->Height = DBImagen->Height;
  11.                 bm->Canvas->StretchDraw(bm->Canvas->ClipRect,j);
  12.                 j->Assign(bm);
  13.  
  14.                 //Se asigna al campo fotografía de la tabla de la BD
  15.                 Graphics::TBitmap *b = new Graphics::TBitmap();
  16.                 TMemoryStream *s = new TMemoryStream;
  17.                 b->Assign(j);
  18.                 b->SaveToStream(s);
  19.                 delete b;
  20.                 delete j;
  21.                 MyTablaTrabajador->Edit();
  22.                 MyTablaTrabajadorfotografia->LoadFromStream(s);
  23.                 MyTablaTrabajador->Post();
  24.  
  25.  

Aquí supongo que quiero mostrar la nueva imagen que cargo de un OpenPictureDialog en un DBimage que tengo en el formulario. Se consigue una redimensión de la imagen para que se vea correctamente, ajustándola a las dimensiones del DBImage. Por último, MyTablaTrabajador es un objeto TMyTable muy similar aTTable, cuyo TableName es una tabla que tengo en mi base de datos que se llama trabajador, y que tiene un campo que se llama fotografía.

Saludos!!!