delphi 中怎样打开jpg图片,保存到数据库中并要打印

程序进行中了!
2024-12-01 14:35:03
推荐回答(4个)
回答(1):

打开图片(.jpg和.bmp都可以)
var
bmp:TBitmap;
jpg:TJpegImage;
temp:string;
sum:string;
i,j:integer;
jj,bb:boolean;
begin
if openpicturedialog1.Execute then
begin
edit1.Text:=openpicturedialog1.FileName;
bmp:=TBitmap.create;
jj:= AnsiEndsText('.jpg',edit1.Text);//看看是jpg文件还是bmp文件
bb:= AnsiEndsText('.bmp',edit1.Text);
if jj then
begin
Jpg:=TJpegImage.Create;
Jpg.LoadFromFile(openpicturedialog1.FileName);
bmp.assign(jpg);
jpg.free;
key:=extractfilename(edit1.Text);//将jpg转化bmp
sum:=key;
i:=length(sum);
i:=i-4;
temp:='';
for j:=1 to i do
begin
temp:=temp+sum[j];
end;

key:=temp;
key:=key+'.bmp';

bmp.savetofile(key);//转化结束,因为mysql不能存jpg
biao:=1;
end
else if bb then
begin
bmp.LoadFromFile(openpicturedialog1.FileName);
key:=extractfilename(edit1.Text);
biao:=0;
end;
image1.Picture.LoadFromFile(openpicturedialog1.FileName);
bmp.free;
end;
保存图片:
var
Picture1:TPicture;
begin // 保存图片到数据库中
Picture1:=TPicture.create;
try
try
if fileexists(edit1.text) then
with ADOtable1 do
begin
adotable1.Close;
adotable1.Open;

Picture1.LoadFromFile(key);
if Locate('name',extractfilename(edit1.text),[loCaseInsensitive])=false then
begin
indexfieldnames:='name';
ADOtable1.Insert;
Fields[0].AsString:=extractfilename(key);
Fields[1].Assign(Picture1);
Post;
showmessage('图象保存成功!');
end
else
showmessage('图象已经存在!');
end;
finally
Picture1.Free;
bmp1.Free;
end;
except
showmessage('图象保存失败!');
end;

if biao=1 then
DeleteFile(key);
end;

打印则qreport中的qrimage,或者是fastrepot exports中的frBMPExport和frJPEGExport!!

回答(2):

打开jpg图片用Timage的picture属性.
还可以加载tjpeg单元,用Tjpeg类直接处理

保存到数据库要应用流类(Tstream),将picture中的图片信息写入数据库的图像或二进制类型的字段

也可以将picture中的jpg图片粘贴到粘贴板,在通过粘贴板写入字段.

打印时用quickreport页中的qrimage调出即可打印

回答(3):

找个控件试试
savetostream()
loadfromstream()
memorystream()
Tblobfield
tadoblobfield
看看上面的一些帮助

回答(4):

打开jpg

uses jpeg;

....

var Jpg1: TJpegImage;

...

Jpg1:=TJpegImage.Create;
Jpg1.LoadFromFile(...);

保存到数据库,各数据库方法不同
最简单的方法是用二进制直接写进去

打印参考相关空间,我不太清楚。。。