BMP和Jpeg同时显示的问题?我的代码如下:

Carfield 2002-02-02 04:09:06
var
PicStream:TMemoryStream;
MyJpeg:TJpegImage;
procedure TForm1.DBImage1Click(Sender: TObject);
begin
if OpenPicturedialog1.Execute then
begin
PicStream:=TMemoryStream.Create;
MyJpeg:=TJpegImage.Create;
PicStream.LoadFromFile(OpenPictureDialog1.FileName);
if (ExtractFileExt(OpenPictureDialog1.FileName)='.JPG') or (ExtractFileExt(OpenPictureDialog1.FileName)='.JPEG')then
begin
DBImage1.Picture.Graphic:=nil;
DBImage1.Picture.Graphic:=MyJpeg;
DBImage1.Picture.Graphic.LoadFromStream(PicStream);
end else
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
AdoTable1.Open;
AdoTable1.Append;
PicStream.Position:=0;
TBlobField(ADOTable1.FieldByName('Picture')).LoadFromStream(PicStream);
ADOTable1.Post;
Myjpeg.Free;
PicStream.Free;

end;

保存BMP文件没有问题,但是打开Jpeg文件保存时却出现提示错误:”Bitmap image is not valid“
请问如何解决?
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel80386 2002-04-18
  • 打赏
  • 举报
回复
简单

1、有一个这样的表
APP_IMAGEATT
(
ID , varchar(38) , not null
Content , image , null
FileName , varchar(50), null
)

例: FileName , varchar(50) , null


2、在写库时同时将文件名写入表中的 FileName 字段

3、从数据库中读取BLOB字段的内容并保存成文件
然后再让图象控件按‘LoadFromFile’的方法显示
这样你可以不用管是什么格式、什么后缀名的文件了。

附上 第3步的函数

AImage: 图象控件
ImageID: 数据库中该记录的GUID
AImageQuery:ADOQuery控件
ALabel: 显示图片信息的 Label

procedure ShowImageInfo(AImage: TImage; ImageID: string; AImageQuery: TADOQuery; ALabel: TLabel);
var
lStream: TMemoryStream;
begin
lStream := nil;
AImage.Picture := nil;
ALabel.Caption := '';
if ImageID = '' then Exit;

with AImageQuery do
try
if Active then Close;
Sql.Text:='select * from APP_IMAGEATT where id='''+ ImageID +'''';
Open;
if not Eof then
begin
lStream := TMemoryStream(CreateBlobStream(FieldByName('Content'), bmRead));
lStream.SaveToFile(ExtractFileDir(Application.Exename) + '\' + FieldByName('FileName').AsString);
AImage.Picture.LoadFromFile(ExtractFileDir(Application.Exename) + '\' + FieldByName('FileName').AsString);
DeleteFile(ExtractFileDir(Application.Exename) + '\' + FieldByName('FileName').AsString);
end
else
ALabel.Caption := '图片丢失';
finally
Close;
lStream.Free;
end;
end;
ccc_wh 2002-02-02
  • 打赏
  • 举报
回复
呵呵,
Uses jpeg;
给点分吧?
wisenowa 2002-02-02
  • 打赏
  • 举报
回复
哪句出错?
Carfield 2002-02-02
  • 打赏
  • 举报
回复
Up,Up,Up。。。
Carfield 2002-02-02
  • 打赏
  • 举报
回复
请各位帮帮忙?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧