| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 27 Dic, 2004 9:44 am Asunto: Descargar gráficos de una tabal |
|
|
Buenas. Tengo definida una tabla paradox en la que hay uncampo de tipo imagen, que cargo sin ningún problema con un LoadFromFile. Ei problema viene cuando quiero extraer ese gráfico guardado a un fichero con un SaveToFile. Estoy usando este código:
| Código: | TJPEGImage *ImgJpg = new TJPEGImage();
AnsiString cImgJpg = ExtractFilePath(Application->ExeName) + fCine->Peliculas->FieldByName("Título")->AsString + ".jpg";
try
{
ImgJpg->Assign(fCine->Peliculas->FieldByName("Caratula")->Value);
ImgJpg->SaveToFile(cImgJpg);
}
__finally
{
delete ImgJpg;
} |
En ImgJpg->Assign he probado con ->Value, con ->AsGraphic, con ->AsBlob... pero siempre me da error de sintaxis al compilar. Va por delante que en el formulario tengo puesto un DBImage asociado a ese campo de la tabla. ¿Alguna idea? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
marcoss Cdt

Registrado: 24 Dic 2004Mensajes: 24
|
Publicado: Lun 27 Dic, 2004 3:53 pm Asunto: |
|
|
yo cargo la imagen en un stream:
| Código: |
std::auto_ptr<TJPEGImage> JImg (new TJPEGImage);
TBlobField *bf = dynamic_cast<TBlobField*>
(MdDatos->TabArticulo->FieldByName("ART_CAR"));
if(bf)
{
std::auto_ptr<TMemoryStream> ms (new TMemoryStream);
bf->SaveToStream(ms.get());
ms->Position = 0;
JImg->LoadFromStream(ms.get());
((TImage *) Sender)->Picture->Assign(JImg.get());
}
else
{
Application->MessageBox("Imposible cargar la imagen de la tabla.\nSe cargará la imagen por defecto",
FrmPpal->Caption.c_str(),
MB_ICONERROR+MB_OK);
CargarCaratulaDefecto(Sender);
} |
el codigo no guarda la imagen en un fichero, sino que la carga en un TImage, pero añadiendo
| Código: | JImg->SaveToFile(path); |
deberia funcionar |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 27 Dic, 2004 7:25 pm Asunto: |
|
|
Grcias. Lo probé y me funciona perfecto. El código me ha quedado así:
| Código: | #include <memory>
AnsiString cCaratula = ExtractFilePath(Application->ExeName) + fCine->Peliculas->FieldByName("Título")->AsString + ".jpg";
std::auto_ptr<TJPEGImage> JImg (new TJPEGImage);
TBlobField *bCaratula = dynamic_cast<TBlobField*> (fCine->Peliculas->FieldByName("Caratula"));
if (bCaratula)
{
std::auto_ptr<TMemoryStream> ms (new TMemoryStream);
bCaratula->SaveToStream(ms.get());
ms->Position = 0;
try
{
JImg->LoadFromStream(ms.get());
((TImage *) Sender)->Picture->Assign(JImg.get());
}
catch(...)
{
}
}
JImg->SaveToFile(cCaratula); |
Con lo que me crea un fichero JPG con el título de película como nombre del mismo. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|