我用了以下方法将jpg图片存入access数据库:
方法一:procedure Tform1.savepicture(img: Timage; ADOQ: TADOtable; field: string);
var photo: Tmemorystream;
begin
photo := Tmemorystream.create;
img.Picture.graphic.savetoStream(photo);
Tblobfield(ADOQ.FieldByName(field)).loadfromstream(photo);
photo.Clear;
end;方法二:image1.Picture.LoadFromFile(filename);
fieldbyname('picture').assign(image1.picture);filename存的是图片存储路径,请帮助!我试了好久都不行!
方法一:procedure Tform1.savepicture(img: Timage; ADOQ: TADOtable; field: string);
var photo: Tmemorystream;
begin
photo := Tmemorystream.create;
img.Picture.graphic.savetoStream(photo);
Tblobfield(ADOQ.FieldByName(field)).loadfromstream(photo);
photo.Clear;
end;方法二:image1.Picture.LoadFromFile(filename);
fieldbyname('picture').assign(image1.picture);filename存的是图片存储路径,请帮助!我试了好久都不行!
uses jpeg,
存
if not(query1.State in [dsEdit, dsInsert]) then exit;
if OpenDialog1.Execute then
begin
(query1.FieldByName('img') as TBlobField).LoadFromFile(OpenDialog1.FileName);
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
显
var
JP: TJPEGImage;
bs: TBlobStream;
begin
if not query1.FieldByName('img').IsNull then
begin
bs := TBlobStream.Create((query1.FieldByName('img') as TBlobField), bmRead);
jp := TJPEGImage.Create;
jp.LoadFromStream(bs);
Image1.Picture.Assign(jp);
bs.Free;
jp.Free;
end
else
Image1.Picture:=nil;
如果要保存的流中有控制字符则ADO在存取时将可能会出错:不能正确读取。
我试过N次了。
begin
with TFileStream.Create(filename,fmOpenRead) do
begin
SetLength(Result,Size);
Read(Point(Result)^,Size);
Free;
end;
end;...
ADOQuery1.FieldByName('Photo').AsString:=JpgToPStr(filename);
...
Read用ADOBlobStream
bs:TADOBlobStream;
begin
bs:=TADOBlobStream.Create(TBlobField(FieldByName('Photo')),bmRead);
bs.SaveToFile('$Temp.jpg');
Image1.Picture.LoadFromFile('$Temp.jpg');
end;
var
j:tjpegimage;
i:tbitmap;
begin
if OpenPictureDialog1.Execute then
begin if uppercase(extractfileext(openpicturedialog1.FileName))='.JPG' then
begin
j:=tjpegimage.Create ;
i:=tbitmap.Create ;
j.LoadFromFile(openpicturedialog1.FileName );
i.Assign(j) ;
i.SaveToFile(extractfilepath(application.exename)+'temp1.bmp');
dbimage1.Picture.LoadFromFile(extractfilepath(application.exename)+'temp1.bmp');
i.Free;
j.Free;
//showmessage('s');
end
else
begin
dbimage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end; end;
end;