请分析一下我这段从数据库中取图片的代码,为什么会报错‘JPEG Error #42’?

时间:2022-10-24 14:52:45

sqlstr:='select  * from tupian where bt= '+chr(39)+RzListView12.Selected.Caption +chr(39);
   with DataModule1.ADOQuery4 do
   begin
      close;
      SQL.Clear;
      SQL.Add(sqlstr);
      open;
      first;
      try
        t_ms:=Tmemorystream.Create;
        t_jpg:=Tjpegimage.Create ;

     TBlobField(Fieldbyname('photo')).SaveToStream(t_ms);//将'photo'图片读入到内存流t_ms
        t_ms.size;//为什么是0?    
        t_ms.Position:=0;

        t_jpg.LoadFromStream(t_ms) ;
        t_jpg.JPEGNeeded;

        Image8.Picture :=nil;
        Image8.Picture.Bitmap.Assign(t_jpg)  ;
      finally
        t_ms.Free;
        t_jpg.Free;
      end;

    end;
   DataModule1.ADOQuery4.Close;

3 个解决方案

#1


问题一、报错‘JPEG Error #42’,是因为 t_ms.size=0,内存流中没有数据!
但是为什么TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)不能读出图片。

问题二、在另外一个程序中,TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)好像不能连续读数据,比如说要一次性读6张图片,用一个循环来做,第一张图片可以读出来,第二、三、四时,那个内存流的size都是为0,可能最后一个又有数据?

很奇怪,这个问题困扰了我几天,一直没有解决,请高手指教!

#2


怎么这里没有高手吗?
我在这里等了几天了,居然没有一个人能够提出一点有意义的参考

#3


上QQ来
我的是83039548
或者MSN:unsignedme@hotmail.com

#1


问题一、报错‘JPEG Error #42’,是因为 t_ms.size=0,内存流中没有数据!
但是为什么TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)不能读出图片。

问题二、在另外一个程序中,TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)好像不能连续读数据,比如说要一次性读6张图片,用一个循环来做,第一张图片可以读出来,第二、三、四时,那个内存流的size都是为0,可能最后一个又有数据?

很奇怪,这个问题困扰了我几天,一直没有解决,请高手指教!

#2


怎么这里没有高手吗?
我在这里等了几天了,居然没有一个人能够提出一点有意义的参考

#3


上QQ来
我的是83039548
或者MSN:unsignedme@hotmail.com