我通过视频抓拍后,把图片转为JPG格式存入数据库,发现每存一次,内存总会增加少量,请高手看看,这是为什么?
procedure Tfrm_parkvmain.pr_savejpgtodb(i_recno:integer);
var
query:Tadoquery;
m_jpegstream:Tmemorystream;
begin
query:=Tadoquery.Create(nil);
m_JpegStream := TMemoryStream.Create;
try
query.ConnectionString:=vgs_connstr;//vgs_connstr数据库连接字符串 ima_in.Picture.Graphic.SaveToStream(m_jpegstream);
query.SQL.Clear;
query.SQL.Add('exec pr_catchimage :image_in');
query.Parameters.ParamByName('image_in').LoadFromStream (m_JpegStream,ftblob);
try
query.Open;
vgr_passrecord[i_recno-1].photoID:=query.fieldbyname('photoid').asinteger;
except
end;
finally
query.Close;
query.Free;
m_jpegstream.Free;
end;
end;
//以下为数据库存储过程CREATE procedure pr_catchimage --车辆入场保存图片
@image_in image
as
insert into t_carphoto values(@image_in) --插入图片
select max(photoid) as photoid from t_carphoto --得出当前插入记录的PHOTOID(编号)
;
procedure Tfrm_parkvmain.pr_savejpgtodb(i_recno:integer);
var
query:Tadoquery;
m_jpegstream:Tmemorystream;
begin
query:=Tadoquery.Create(nil);
m_JpegStream := TMemoryStream.Create;
try
query.ConnectionString:=vgs_connstr;//vgs_connstr数据库连接字符串 ima_in.Picture.Graphic.SaveToStream(m_jpegstream);
query.SQL.Clear;
query.SQL.Add('exec pr_catchimage :image_in');
query.Parameters.ParamByName('image_in').LoadFromStream (m_JpegStream,ftblob);
try
query.Open;
vgr_passrecord[i_recno-1].photoID:=query.fieldbyname('photoid').asinteger;
except
end;
finally
query.Close;
query.Free;
m_jpegstream.Free;
end;
end;
//以下为数据库存储过程CREATE procedure pr_catchimage --车辆入场保存图片
@image_in image
as
insert into t_carphoto values(@image_in) --插入图片
select max(photoid) as photoid from t_carphoto --得出当前插入记录的PHOTOID(编号)
;
如何处理,
如果把TCOLOR的值均分好像不太好,至少-10度和10 读的颜色用肉眼分辨不出来!
用TBolbField(ADODataSet1.FieldByName('image_field')).LoadFromStream存入数据,然后Post试试看
你好!
我有试过这种方法,也一样会不断增加内存,另外,如果用这种方法它每次要OPEN表,速度会挺慢的