我把图片从数据库里取出来(.jpg),想保存到objectlist中,然后再调用objectlist中的图片,一张一张分别显示在image控件中,请问怎么做啊?

解决方案 »

  1.   

    保存代码如下: 
    procedure SavePicture(img:TImage); 
     var 
       JPGImg: TJPEGImage; 
       ADOData: TADOBlobStream; 
    begin 
         JPGImg := TJPEGImage.Create; 
         ADOData := 
    TADOBlobStream.Create(TBlobField(DataModule1.PatientInfoTable.FieldByName('图像1')), bmWrite); 
         try 
           JPGImg.Assign(img.Picture.Bitmap); 
           JpgImg.SaveToStream(ADOData); 
         finally 
           JPgImg.Free; 
           ADOData.Free; 
         end; 
    end; 读取代码如下: 
    procedure LoadPicture(img: TImage); 
     var 
       PicFieldName: string; 
       PicData: TADOBlobStream; 
       Pic: TJPEGImage; 
     begin 
       case img.Tag of 
         0: PicFieldName := '图像1'; 
         1: PicFieldName := '图像2'; 
         2: PicFieldName := '图像3'; 
         3: PicFieldName := '图像4'; 
       end; 
       if not DataModule1.PatientInfoTable.FieldByName(PicFieldName).isNUll then 
       begin 
         PicData := 
           TADOBlobStream.Create(TBlobField(DataModule1.PatientInfoTable.FieldByName(PicFieldName)), bmRead); 
        //重点在下面 
         pic := TJPEGImage.Create; 
         try 
           pic.LoadFromStream(PicData); 
           img.Picture.Assign(pic); 
         finally 
           PicData.Free; 
           pic.Free; 
         end; 
       end 
       else 
         img.Picture.Assign (nil); 
     end; 
      

  2.   

    插入: 
    Jpg := TJpegImage.Create; 
    Jpg.LoadFromFile(FileName); 
    ADOQuery1.FieldByName('图片').Assign(JPG) 
    JPG.Free; 
    读取: 
    Jpg := TJpegImage.Create; 
    Jpg.Assign(ADOQuery1.FieldByName('图片')); 
    Image1.Picture.Bitmap :=Jpg2Bmp(Jpg); 
    Jpg.Free; function Jpg2Bmp(Jpg: TJpegImage): TBitmap; 
    begin 
     Result := nil; 
     if Assigned(Jpg) then begin 
       Result := TBitmap.Create; 
       Jpg.DIBNeeded; 
       Result.Assign(Jpg); 
     end; 
    end; function Bmp2Jpg(Bmp: TBitmap; Quality: Integer = 100): TJpegImage; 
    begin 
     Result := nil; 
     if Assigned(Bmp) then begin 
       Result := TJpegImage.Create; 
       Result.Assign(Bmp); 
       Result.CompressionQuality := Quality; 
       Result.JPEGNeeded; 
       Result.Compress; 
     end; 
    end;