BCB 默认并不支持 JPEG ,但可以通过引用 jpeg.hpp 头文件,并让图片组建支持了 JPEG 了。

下面是我使用过程中的一些代码:

1、数据库存储 / 读取 JPEG 文件。(这东东比较简单的,这里假设 MSSQL 的数据库,con 为 ADOConnection,qry 为 ADOQuery 连接 con,字段 img 为保存图片的字段)

a. 存储

    TJPEGImage *pJPG = new TJPEGImage();
    TStream 
*pStream = new TStream;  // 创建流
    pJPG->LoadFromFile ("文件名");
    pJPG
->SaveToStream (pStream);      // 将图片保存成流
    
// 以下为更新了
    qry->SQL->Clear();
    qry
->SQL->Text = "Update tablename Set img = :IMAGE Where key = 1";
    qry
->Parameters->Items[0]->LoadFromStream (pStream,ftBlob);
    qry
->ExecSQL();
    delete 
*pStream;
    delete 
*pJPG;

b. 读取

    qry->SQL->Clear();
    qry
->SQL->Text = "Select img From tablename Where key = 1";
    qry
->Open();
    
if (!qry->Eof) {
        TStream 
*pStream = qry->CreateBolbStream(qry->FieldByName("img"),bmRead);  // 从数据库读入流
        if (pStream->Size) {
            TJPEGImage 
*pJPG = new TJPEGImage();
            pJPG
->LoadFromStream (pStream);
            img1
->Picture->Graphic = pJPG;    // img1 为图象组件
            delete pJPG;
        }

    }

    qry
->Close();

2、BMP / JPEG 互相转换

TBitmap 与 TJPEGImage 属于同一个父类,使用起来有一定的相似之处,关于他们的互相转换,方法也很简单,下面举个例子:

    Graphics::TBitmap *bmp = new Graphics::TBitmap();
    TJPEGImage 
*jpg = new TJPEGImage;
    bmp
->LoadFromFile ("文件名");
    jpg
->Assign (bmp);
反之亦然。