当前位置:主页>仓库管理软件> 列表

关于不同格式图片的存取问题 找服装鞋帽销售软件

销售管理软件版1楼: 有Access库 ‘Image’字段为OLE对象,都为.GIF格式图片,如何用image控件把他读出。
参考了资料,发现JPG,BMP的都可以,而GIF的不行,于是uses GIFImage;还是不行。
错误在于从数据库中取出时不对。请大虾们帮忙,分不够再加
代码:
uses GIFImage;
{$R *.dfm}

var
MyGIF: TGIFImage;
MS: TMemoryStream;
Begin
with TADOQuery(dsDetail.DataSet) do
begin
MS := TMemoryStream.Create;
MyGIF := TGIFImage.Create;
Requery();
try
if TBlobField(FieldByName(''Image'')).IsNull then
begin
imgole.Visible := False;
end;
TBlobField(FieldByName(''Image'')).SaveToStream(MS);
MS.Position := 0;
MyJPEG.LoadFromStream(MS);
imgole.Picture.Assign(MyGIF);
finally
MyGIF.Free;
MS.Free;
end;
end;

2楼: 存任意的。取时要先读头信息。根据不同类型建立不同的图 如服装鞋帽销售软件

3楼: var gif:TGifImage;
ms:TMemoryStream;
bmp:TBitmap;
begin
with TBlobField(self.ADOQuery1.FieldByName(''b'')) do begin
try
ms:=TMemoryStream.Create;
gif:=TGifImage.Create;
bmp:=TBitmap.Create;
SaveToStream(ms);
ms.Position:=0;
gif.LoadFromStream(ms);
bmp.Assign(gif);
self.Image1.Picture.Assign(bmp);
self.Image1.Refresh;
finally
gif.Free;
ms.Free;
end;
end;
end;

用上面的就可以了,即要把GIF先赋给bmp,然后再给Image,
如果用不同的格式的图片,可以判断文件头,或者直接在表里保存扩展名,然后先装载到各自不同的类(如TGifImag,tjpegImage,tBitMap),再一律通过BMP中转后,就不会存在问题

4楼: 按您说的写了 还是报错阿
---------------------------
Project Project1.exe raised exception class GIFException with message ''Premature end of data''. Process stopped. Use Step or Run to continue.

这是咋回事呢

5楼: 換一个控件三,用GraphicEx三

6楼: jie