楼上的也只是将bmp和jpg分别辩断进行保存和读取。
我觉得最好的办法就是将bmp格式的文件转为jpg格式进行保存和读取,这样更方便。
我的方法:
//将图片格式均转换为jpg进行存入。
pjpg:=TJpegImage.Create;
if extractfileext(openpicture1.dialog.filename)='.bmp' then
pjpg.assign(Carimage.picture.bitmap)
else
if (extractfileext(openpicture1.dialog.filename)='.jpg') or (extractfileext(openpicture1.dialog.filename)='.jpeg') then
pjpg.assign(carimage.picture)
else
exit;
try
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(DM.CarQuery.fieldbyname ('照片')).LoadFromStream(pic);
finally
pic.Free;
pjpg.free;bmp1.free;
end;
//读取时
try
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(DM.CarQuery.fieldbyname ('照片')).savetoStream(pic);
if pic.Size=0 then
exit;
pic.position:=0;
pjpg.LoadFromStream(pic);
Carimage.picture.assign(pjpg);
finally
pjpg.Free ;
pic.Free ;
end;
procedure TfrmMain.LoadImg(Sender: TObject);
begin
if opDlg.Execute then
begin
if (dmImage.sdsImage.State = dsBrowse) then
dmImage.sdsImage.Edit;
dmImage.sdsImageIMAGE.LoadFromFile(opDlg.FileName);
end;
end;
procedure TfrmMain.DisplayImg(Sender: TObject);
begin
try
dmImage.sdsImageImage.SaveToFile('Temp.JPG');
Self.igJPG.Picture.LoadFromFile('Temp.JPG');
except
on Exception do;
end;
end;
//写入
var
MS: TMemoryStream;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
Table1.Append;
//在数据库中添加一条记录
TBlobField(Table1.FieldbyName(’image’)).LoadFromStream(MS);
Table1.Post;
//将所作的更新写入数据库
end;
//读取
var
MS: TStream;
begin
with Table1 do
MS:=CreateBlobStream(FieldbyName(’image’),bmRead);
Image1.Picture.Bitmap.
LoadFromStream(MS);
MS.Free;
end;