我的数据库中Blob字段中存有图像的字节数据,每个图像有256*300字节。
请问如何快速取出数据并能以最快的速度显示?不是数据库图像显示控件
那种。
请问如何快速取出数据并能以最快的速度显示?不是数据库图像显示控件
那种。
解决方案 »
- 一个关于dbgrid的问题!
- 视频采集问题!求助加散分!
- ADODataSet中多条记录的处理问题
- 为什么程序关闭的时候报XXX内存不能read的错!
- MDIForm的疑难问题!
- 如何自定义一个函数,使之能求组合数?
- delphi+sqlserver2000开发资源释放
- 初学者的问题,非常急!!!!!!!!!!!!!
- CheckListBox1里check选中,CLOSE后如何显示出来,急,简单,马上给分
- dbchekbox救命?
- 如何当数据集的纪录移动的时候,触发一个事件,以响应我需要的作的工作??
- 我用StringReplace函数做替换,把TXT文件中的英文字符串替换成中文字符串,结果是乱码。
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
pjpg.free;
end;
从数据库取出
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(dataset.FieldByName('Img')).savetoStream(pic);
pic.positon:=0;
pjpeg.LoadFromStream(pic);
image.graphi.bmp.assign(pjpeg);
end;end;
如指纹识别。我的意思是如何把字节数据快速转化为图像像素,并快速显示。blob字段中
存放的是256*300字节的颜色值。我的处理是如下,显示很慢:
procedure TForm1.Button1Click(Sender: TObject);
var
longstr,longstr1:ansistring;
size,C,m,wd,lg:integer;
tmpstr:string;
Achar:array of char;
pchar1:pchar;
textfile1:textfile;
clr:integer;
begin
if Not adoc1.Connected then
adoc1.Open;
with adoqr1 do
begin
close;sql.Clear;
sql.Add('select top 1 * from fingerindex where id=78');
open;
if Recordcount>0 then
begin
longstr:=TblobField(Fieldbyname('指纹数据')).AsVariant;
Size:=TBlobField(Fieldbyname('指纹数据')).BlobSize;
c:=0;m:=0;
wd:=10;lg:=100;
if size>0 then
begin
setlength(Achar,size);
longstr1:=longstr;
While Length(longstr1)>=1 do
begin
TmpStr:=Copy(longstr1,1,1);
pchar1:=Pchar(TmpStr);
Achar[C]:=pchar1[0];
if m=256 then
begin
form1.Canvas.Pixels[wd,lg]:=StringToColor('$'+inttoHex(integer(achar[c]),2)+'0000');
inc(lg);
wd:=10;
m:=0;
end
else
begin
form1.Canvas.Pixels[wd,lg]:=StringToColor('$'+inttoHex(integer(achar[c]),2)+'0000');
inc(wd);
end;
inc(m);
Inc(C);
longstr1:=Copy(longstr1,2,Length(longstr1)-1);
end;
end;
end;
end;
end;
--------------------------------------
看!
那支正飞向太阳的蛾子.....
就是我!
--------------------------------------
哪位请回答我,我再加100分!
1 与设备无关的位图格式bitmap格式显示和处理是最快的
2 如果你的网络不行的话可以考虑压缩以后存储
3 单就数据库交互存取过程来说,没有什么代码能够提高select速度了,关键是你的处理速度和减少数据量,代码如何可以参看 qwertyasd(昊) 的
--------------------------------------
看!
那支正飞向太阳的蛾子.....
就是我!
--------------------------------------
MS: TMemoryStream;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
Table1.Append;
file://在数据库中添加一条记录
TBlobField(Table1.FieldbyName
('image')).LoadFromStream(MS);
Table1.Post;
file://将所作的更新写入数据库
end;
2. 这里演示了TBlobStream的用法,使用了和写入时不同的方法来读出数据库的图象数据。 var
MS: TStream;
begin
with Table1 do
MS:=CreateBlobStream
(FieldbyName('image'),bmRead);
Image1.Picture.Bitmap.
LoadFromStream(MS);
MS.Free;
end;