Hola de nuevo.
De este modo me funciona bien:
Código PHP:
...
#include <jpeg.hpp>
void blobTojpg( TField *fld, TImage *img )
{
TBlobField *B = static_cast <TBlobField*> ( fld );
if( !B->Value.IsEmpty() ) {
TJPEGImage *J = new TJPEGImage;
try {
J->Assign( B );
img->Picture->Bitmap->Height = J->Height;
img->Picture->Bitmap->Width = J->Width;
img->Picture->Bitmap->Canvas->Draw( 0, 0, J );
}
__finally {
delete J;
}
}
}
Y si gustas usar streams,
Código PHP:
void blobTojpg2( TField *fld, TImage *img )
{
TBlobField *B = static_cast <TBlobField*> ( fld );
if ( !B->Value.IsEmpty() ) {
TStream *Stream = new TMemoryStream;
TJPEGImage *Jpg = new TJPEGImage;
try {
B->SaveToStream( Stream );
Stream->Seek( 0, soFromBeginning);
Jpg->LoadFromStream( Stream );
img->Picture->Assign( Jpg );
}
__finally {
delete Stream;
delete Jpg;
}
}
}
Llamada (para ambos casos):
Código PHP:
void __fastcall TForm1::DataSetAfterScroll( TDataSet *DataSet )
{
blobTojpg( IBDataSet1->FieldByName("IMAGE"), Image1 ); // o blobToJpg2( ...
}
El resultado en ambos casos:
Saludos