请问!如何在DBimage里调用数据库里的图片?还有怎样在表里怎样输入图片?(100分)

  • 主题发起人 主题发起人 jaysoul
  • 开始时间 开始时间
J

jaysoul

Unregistered / Unconfirmed
GUEST, unregistred user!
我想要的是利用delphi里自带的控件里实现的哦。请各位尽量发表哦~谢谢!
 
1. TDBImageEx 增强TDBImage功能支持JPEG格式 下载
http://www.wisdomcube.com/stuff/DBImageEx.zip
主要增加了对JPEG格式图片的支持,增加的属性方法和事件的说明如下

AutoSize属性,主要用法是把TDBImageEx放在一个TScrollBox中,也就是增加ScrollBars
PictureType(ptBitmap, ptJPEG)属性,支持的图片类型。
BeforeLoadPicture事件,主要是在从数据库读取图片时确定图片格式(PictureType属性)以支持可以在数据库中同时保存Bitmap和JPEG格式的图片
同时还包含一个范例。

 
TDBImage可以自动显示图片,如果输入图片:
(DBImage1.Field As TBlobField).LoadFile('c:/a.bmp');
 
使用TBlobField實現....如tyzhang大蝦所說的方法,還有:
(DBImage1.Field As TBlobField).LoadfromFile('c:/a.bmp');
(DBImage1.Field As TBlobField).savetoFile('c:/a.bmp');
 
用DBImage只能显示和存储*.bmp图象,而Image能显示和存储*.jpg图象。
下面是一个例子:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, Grids, DBGrids, Menus,Jpeg;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Image1: TImage;
PopupMenu1: TPopupMenu;
LoadPic: TMenuItem;
deletepic: TMenuItem;
saveAs: TMenuItem;
procedure LoadPicClick(Sender: TObject);
procedure deletepicClick(Sender: TObject);
procedure saveAsClick(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.LoadPicClick(Sender: TObject);
var
pic:TPicture;
jpeg:TJPEGImage;
begin
datasource1.dataset.edit;
if(opendialog1.Execute) then
begin
pic:=tpicture.Create;
jpeg:=TJPEGImage.Create;
try
pic.LoadFromFile(opendialog1.FileName);
if pic.Bitmap.Empty=false then
jpeg.Assign(pic.Bitmap)
else
jpeg.loadfromfile(opendialog1.FileName);
datasource1.dataset.fieldbyname('photo').assign(jpeg);
finally
pic.Free;
jpeg.free;
end;
end;
end;

procedure TForm1.deletepicClick(Sender: TObject);
begin
datasource1.dataset.edit;
datasource1.dataset.fieldbyname('photo').assign(nil);
datasource1.dataset.post;
end;

procedure TForm1.saveAsClick(Sender: TObject);
begin
if(savedialog1.Execute)then
image1.Picture.Graphic.SaveToFile(savedialog1.FileName);
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
jpeg:TJPEGImage;
begin
if datasource1.DataSet.FieldByName('photo').IsNull=false then
begin
jpeg:=tjpegimage.create;
try
jpeg.assign(datasource1.DataSet.FieldByName('photo'));
image1.Picture.Assign(jpeg);
finally
jpeg.free;
end;
end
else
image1.Picture.Assign(nil);
end;

end.

 
xiaoln01兄,你太酷了,那正是我想要的!![:D]
 
DBIMAGE本身就是用来显示数据库中图片的.只要DATASOURCE设置为对应的DATASOURCE,
字段名设置为图形字段就可以自动显示了。
图片的存储有几种方法一个是通过拷贝粘贴。
一个是读写流操作
还有其他方法,用得最多的是后者
可以用数据库,图形来全文检索,很多的答案
 
非常感想大家!!真的!![:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部