读写数据库中的图片,用imageenmview控件来作显示
2013-04-03 11:14
357 查看
调用显示图片时作个判断
if edit_bz_bh.text<>'' then zp_show(imageenmview_bz,trim(edit_bz_bh.text);
或者放在edit_bz_bh的 change事件中
//显示图片
//myimageenmview是显示图片的控件,dm是关键了段
procedure zp_show(myimageenmview:timageenmview;dm:string);
var
i:integer;
fimage:TMemoryStream;
begin
//清空imageenmview中图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
//数据库查询
sqlquery1.SQL.Text:='select * from db_zp where 代码='+quotedstr(dm);
sqlquery1.open;
sqlquery1.First;
if sqlquery1.Eof then exit; //不存在相关的记录就退出
sqlquery1.First;
if not sqlquery1.Eof then begin
fimage:=tmemorystream.Create;
TBlobField(sqlquery1.FieldByName('照片')).SaveToStream(fimage);
myimageenmview.SelectedImage:=0;
fimage.Position:=0;
myimageenmview.MIO.LoadFromStream(fimage);
myimageenmview.ImageFileName[0]:=sqlquery1.FieldValues['编号'];
fimage.Free;//释放流
end;
end;
修改图片
procedure zp_change(myimageenmview:timageenmview;dm:string);
var
bh,filename:string;
i,iw,ih:integer;
imageenviewx:TImageEnView;
fimage:TMemoryStream;
begin
//打开图片对话框
if openpicturedialog1.Execute =false then exit;
filename:=openpicturedialog1.FileName;
//从INi文件中读取预设图片宽度,如果读入图片大于这个数值就进行压缩
iw:=strtointdef(readinis(ExtractFilePath(Paramstr(0))+'\info.ini','info','imagewidth'),600);
//将图片转换大小并存入stream
imageenviewx:=TImageEnView.Create(dllform);
fimage:=TMemoryStream.Create;
imageenviewx.IO.LoadFromFile(filename);
ih:=imageenviewx.Bitmap.Height;
if imageenviewx.Bitmap.Width>iw then begin //判断图片宽是否大于预设,是的话就进行缩放
ih:=round(ih*iw/imageenviewx.Bitmap.Width);
imageenviewx.Proc.Resample(iw,ih);
end;
imageenviewx.IO.SaveToStreamJpeg(fimage);
imageenviewx.Free;
//删除数据库中对应的照片
if myimageenmview.ImageCount>0 then begin
bh:=myimageenmview.ImageFileName[0];
sqlquery_zp.SQL.Text:='delete from db_zp where 编号='+quotedstr(bh);
sqlquery_zp.ExecSQL;
end;
//添加到删除数据库中db_delete //这里添加是为了导入本地数据时减少数据量
if myimageenmview.ImageCount>0 then begin
bh:=myimageenmview.ImageFileName[0];
sqlquery1.SQL.Text:='insert into db_delete(编号,日期) values(:a,:b)';
sqlquery1.Params.ParamByName('a').Value:=bh;
sqlquery1.Params.ParamByName('b').Value:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery1.ExecSQL;
end;
//将内存中的图片放入数据库中, 在MYSQL5中图片存使用GB2312字符集,普通操作使用GBK
sqlquery_zp.SQL.Text:='insert into db_zp(编号,代码,照片,修改日期) values(:a,:b,:c,:d)';
bh:='ZP'+formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery_zp.Params.ParamByName('a').Text:=bh;
sqlquery_zp.Params.ParamByName('b').text:=UpperCase(dm);
sqlquery_zp.Params.ParamByName('c').LoadFromstream(fimage,ftBlob);
sqlquery_zp.Params.ParamByName('d').Text:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
try
sqlquery_zp.ExecSQL;
except
application.MessageBox(' 错误: 照片数据库添加资料失败 ','信息',MB_OK);
fimage.Free;
exit;
end;
//更新ImageEnMView中的图片,先清空再读入。
//清空imageenmview中图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
//读入图片
myImageEnMView.SelectedImage:=0;
fimage.Position:=0;
myImageEnMView.MIO.LoadFromStream(fimage);
myimageenmview.ImageFileName[0]:=bh;
fimage.Free;
end;
//删除图片 只适用于单张图片的情况
procedure zp_delete(myimageenmview:timageenmview);
var
bh:string;
i:integer;
begin
if myimageenmview.ImageCount=0 then exit;
bh:=myimageenmview.ImageFileName[0];
//从数据库中删除
if application.messagebox(pansichar('当前选中的图片是否删除'),'记录删除',MB_YESNO)=IDNo then
exit;
sqlquery_zp.SQL.Text:='delete from db_zp where 编号='+quotedstr(bh);
sqlquery_zp.ExecSQL;
//添加到删除数据库中db_delete
sqlquery1.SQL.Text:='insert into db_delete(编号,日期) values(:a,:b)';
sqlquery1.Params.ParamByName('a').Value:=bh;
sqlquery1.Params.ParamByName('b').Value:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery1.ExecSQL;
//清空imageenmview中的图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
end;
if edit_bz_bh.text<>'' then zp_show(imageenmview_bz,trim(edit_bz_bh.text);
或者放在edit_bz_bh的 change事件中
//显示图片
//myimageenmview是显示图片的控件,dm是关键了段
procedure zp_show(myimageenmview:timageenmview;dm:string);
var
i:integer;
fimage:TMemoryStream;
begin
//清空imageenmview中图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
//数据库查询
sqlquery1.SQL.Text:='select * from db_zp where 代码='+quotedstr(dm);
sqlquery1.open;
sqlquery1.First;
if sqlquery1.Eof then exit; //不存在相关的记录就退出
sqlquery1.First;
if not sqlquery1.Eof then begin
fimage:=tmemorystream.Create;
TBlobField(sqlquery1.FieldByName('照片')).SaveToStream(fimage);
myimageenmview.SelectedImage:=0;
fimage.Position:=0;
myimageenmview.MIO.LoadFromStream(fimage);
myimageenmview.ImageFileName[0]:=sqlquery1.FieldValues['编号'];
fimage.Free;//释放流
end;
end;
修改图片
procedure zp_change(myimageenmview:timageenmview;dm:string);
var
bh,filename:string;
i,iw,ih:integer;
imageenviewx:TImageEnView;
fimage:TMemoryStream;
begin
//打开图片对话框
if openpicturedialog1.Execute =false then exit;
filename:=openpicturedialog1.FileName;
//从INi文件中读取预设图片宽度,如果读入图片大于这个数值就进行压缩
iw:=strtointdef(readinis(ExtractFilePath(Paramstr(0))+'\info.ini','info','imagewidth'),600);
//将图片转换大小并存入stream
imageenviewx:=TImageEnView.Create(dllform);
fimage:=TMemoryStream.Create;
imageenviewx.IO.LoadFromFile(filename);
ih:=imageenviewx.Bitmap.Height;
if imageenviewx.Bitmap.Width>iw then begin //判断图片宽是否大于预设,是的话就进行缩放
ih:=round(ih*iw/imageenviewx.Bitmap.Width);
imageenviewx.Proc.Resample(iw,ih);
end;
imageenviewx.IO.SaveToStreamJpeg(fimage);
imageenviewx.Free;
//删除数据库中对应的照片
if myimageenmview.ImageCount>0 then begin
bh:=myimageenmview.ImageFileName[0];
sqlquery_zp.SQL.Text:='delete from db_zp where 编号='+quotedstr(bh);
sqlquery_zp.ExecSQL;
end;
//添加到删除数据库中db_delete //这里添加是为了导入本地数据时减少数据量
if myimageenmview.ImageCount>0 then begin
bh:=myimageenmview.ImageFileName[0];
sqlquery1.SQL.Text:='insert into db_delete(编号,日期) values(:a,:b)';
sqlquery1.Params.ParamByName('a').Value:=bh;
sqlquery1.Params.ParamByName('b').Value:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery1.ExecSQL;
end;
//将内存中的图片放入数据库中, 在MYSQL5中图片存使用GB2312字符集,普通操作使用GBK
sqlquery_zp.SQL.Text:='insert into db_zp(编号,代码,照片,修改日期) values(:a,:b,:c,:d)';
bh:='ZP'+formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery_zp.Params.ParamByName('a').Text:=bh;
sqlquery_zp.Params.ParamByName('b').text:=UpperCase(dm);
sqlquery_zp.Params.ParamByName('c').LoadFromstream(fimage,ftBlob);
sqlquery_zp.Params.ParamByName('d').Text:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
try
sqlquery_zp.ExecSQL;
except
application.MessageBox(' 错误: 照片数据库添加资料失败 ','信息',MB_OK);
fimage.Free;
exit;
end;
//更新ImageEnMView中的图片,先清空再读入。
//清空imageenmview中图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
//读入图片
myImageEnMView.SelectedImage:=0;
fimage.Position:=0;
myImageEnMView.MIO.LoadFromStream(fimage);
myimageenmview.ImageFileName[0]:=bh;
fimage.Free;
end;
//删除图片 只适用于单张图片的情况
procedure zp_delete(myimageenmview:timageenmview);
var
bh:string;
i:integer;
begin
if myimageenmview.ImageCount=0 then exit;
bh:=myimageenmview.ImageFileName[0];
//从数据库中删除
if application.messagebox(pansichar('当前选中的图片是否删除'),'记录删除',MB_YESNO)=IDNo then
exit;
sqlquery_zp.SQL.Text:='delete from db_zp where 编号='+quotedstr(bh);
sqlquery_zp.ExecSQL;
//添加到删除数据库中db_delete
sqlquery1.SQL.Text:='insert into db_delete(编号,日期) values(:a,:b)';
sqlquery1.Params.ParamByName('a').Value:=bh;
sqlquery1.Params.ParamByName('b').Value:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
sqlquery1.ExecSQL;
//清空imageenmview中的图片
for i:=myimageenmview.ImageCount-1 downto 0 do begin
myimageenmview.DeleteImage(i);
end;
end;
相关文章推荐
- Android ListView控件显示数据库中图片
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
- rdlc控件数据库图片的显示 自测成功!
- Android ListView控件显示数据库中图片
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- vb.net实现Datagridview控件显示数据库中的图片
- 游戏开发工具之纹理打包器-2.打开文件夹遍历指定格式的图片,以及显示到tree控件上
- [ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708]
- 如何读取保存在数据库中的图片显示在DataGrid中
- 图片连续滚动(连接数据库repeat控件)
- 读取数据库Image格式图片并显示
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- 上传图片,显示,并且把图片信息存储到数据库表中9.17
- VC窗口(控件)中显示指定 URL 对应图片
- 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- 数据库生成父子节点显示在dropdownlist控件上 (sqlserver查询方法)
- ASP.NET 上传图片至数据库并读取图片显示
- js控制图片上传预览,使用三方插件+名称显示和控件非display:none隐藏