关键是后缀名不代表真正的格式呀,再说了,数据库里哪有文件名呀 我添加了 gifimage单元后, t_jpeg:TJPEGImage; t_gif:TgifImage; //存储照片文件 if Copy(t_field.AsString,7,4)='JFIF' then //JPEG begin t_jpeg:=TJPEGImage.Create; try t_jpeg.LoadFromStream(CreateBlobStream(t_field,bmRead)); t_jpeg.SaveToFile(path+'\'+FieldByName('IDNUMBER').AsString+'.JPG'); finally t_jpeg.Free; end; end else if Copy(t_field.AsString,1,3)='GIF' then //GIF begin t_GIF:=TGIFImage.Create; t_jpeg:=TJPEGImage.Create; try t_GIF.LoadFromStream(CreateBlobStream(t_field,bmRead)); t_jpeg.Assign(t_gif); t_jpeg.SaveToFile(path+'\'+FieldByName('IDNUMBER').AsString+'.JPG'); finally t_GIF.Free; t_jpeg.Free; end;t_jpeg.Assign(t_gif); //提示错误:Cannot assign a TGIFImage to a TJPEGImage,什么原因呢
ExtractFileExt(FileName)
行的话把后缀名改掉就行啦
我添加了 gifimage单元后, t_jpeg:TJPEGImage;
t_gif:TgifImage; //存储照片文件
if Copy(t_field.AsString,7,4)='JFIF' then //JPEG
begin
t_jpeg:=TJPEGImage.Create;
try
t_jpeg.LoadFromStream(CreateBlobStream(t_field,bmRead));
t_jpeg.SaveToFile(path+'\'+FieldByName('IDNUMBER').AsString+'.JPG');
finally
t_jpeg.Free;
end;
end
else if Copy(t_field.AsString,1,3)='GIF' then //GIF
begin
t_GIF:=TGIFImage.Create;
t_jpeg:=TJPEGImage.Create;
try
t_GIF.LoadFromStream(CreateBlobStream(t_field,bmRead));
t_jpeg.Assign(t_gif);
t_jpeg.SaveToFile(path+'\'+FieldByName('IDNUMBER').AsString+'.JPG');
finally
t_GIF.Free;
t_jpeg.Free;
end;t_jpeg.Assign(t_gif); //提示错误:Cannot assign a TGIFImage to a TJPEGImage,什么原因呢
t_jpeg.Assign(t_Bitmap);
从BlobStream装入之前判断一下,选择合适的对象类型来assign。
当然还是要处理异常的,并不是有这个标记就肯定是正确的格式。