一个奇怪的问题
我先判断Image上图片的格式是 JPG 或Bmp;变量JpgorBmp表示图像的格式,为1时,JPG,0时,bmp.
再将Image上的图片存入数据库中,不改变图形格式,即JPG保存为JPG,Bmp还保存成bmp
数据库有两个字段.图片名称,图片(保存图片).procedure TForm1.Button2Click(Sender: TObject);
var
pmem:TADOBlobStream;
pField:TBlobField;
jp:TJPEGImage;
bp:TBitMap;
begin
//JpgorBmp为Image上的图片格式,1表jpg,2表bmp.
//此时Image1上的图片格式是JPG格式,
if(JpgorBmp=1) then
begi
jp:=TJpegImage.Create;
jp.Assign(Image1.Picture.Graphic);
end;
//此时Image1上的图片格式是BMP格式,
if(JpgorBmp=2) then
begin
bp:=TBitmap.Create;
bp.Assign(Image1.Picture.Graphic);
end;
//插入数据
self.ADOTable1.Insert;
self.ADOTable1.FieldByName('图片名称').AsString:=self.Edit1.Text; //
pField:=TBlobField(self.ADOTable1.FieldByName('图片'));
pmem:=TADOBlobStream.Create(pField, bmReadWrite);
pmem.Seek(0,soFromBeginning);
if(JpgorBmp=1) then
begin
jp.SaveToStream(pmem);
pmem.Position:=0;
jp.Free;
pmem.Free;
self.ADOTable1.Post;
end;
if(JpgorBmp=2) then
begin
bp.SaveToStream(pmem);
pmem.Position:=0;
pmem.Free;
bp.Free;
self.ADOTable1.Post;
end;
end;下面的程序问题是:
1:当Image载入jpg文件时,这一切都正常
2:当Image上load的Bmp的文件大小 小于1M时,一切正常.*****
3:当Image上load的Bmp的文件大小 大于1M时,无法正常保存图片,出现异常.*****当Image上load的Bmp的文件大小 大于1M时,无法正常保存图片,出现异常?
奇怪,到底是怎么回事???
我先判断Image上图片的格式是 JPG 或Bmp;变量JpgorBmp表示图像的格式,为1时,JPG,0时,bmp.
再将Image上的图片存入数据库中,不改变图形格式,即JPG保存为JPG,Bmp还保存成bmp
数据库有两个字段.图片名称,图片(保存图片).procedure TForm1.Button2Click(Sender: TObject);
var
pmem:TADOBlobStream;
pField:TBlobField;
jp:TJPEGImage;
bp:TBitMap;
begin
//JpgorBmp为Image上的图片格式,1表jpg,2表bmp.
//此时Image1上的图片格式是JPG格式,
if(JpgorBmp=1) then
begi
jp:=TJpegImage.Create;
jp.Assign(Image1.Picture.Graphic);
end;
//此时Image1上的图片格式是BMP格式,
if(JpgorBmp=2) then
begin
bp:=TBitmap.Create;
bp.Assign(Image1.Picture.Graphic);
end;
//插入数据
self.ADOTable1.Insert;
self.ADOTable1.FieldByName('图片名称').AsString:=self.Edit1.Text; //
pField:=TBlobField(self.ADOTable1.FieldByName('图片'));
pmem:=TADOBlobStream.Create(pField, bmReadWrite);
pmem.Seek(0,soFromBeginning);
if(JpgorBmp=1) then
begin
jp.SaveToStream(pmem);
pmem.Position:=0;
jp.Free;
pmem.Free;
self.ADOTable1.Post;
end;
if(JpgorBmp=2) then
begin
bp.SaveToStream(pmem);
pmem.Position:=0;
pmem.Free;
bp.Free;
self.ADOTable1.Post;
end;
end;下面的程序问题是:
1:当Image载入jpg文件时,这一切都正常
2:当Image上load的Bmp的文件大小 小于1M时,一切正常.*****
3:当Image上load的Bmp的文件大小 大于1M时,无法正常保存图片,出现异常.*****当Image上load的Bmp的文件大小 大于1M时,无法正常保存图片,出现异常?
奇怪,到底是怎么回事???
var
MemStrm: TMemoryStream;
begin
ADOTable1.Insert;
ADOTable1.FieldByName('图片名称').AsString := Edit1.Text; //
MemStrm := TMemoryStream.Create;
try
if (JpgorBmp = 1) then
jp.SaveToStream(MemStrm)
else if (JpgorBmp = 2) then
bp.SaveToStream(MemStrm);
MemStrm.Position := 0;
TBlobField(self.ADOTable1.FieldByName('图片')).LoadFromStream(MemStrm);
finally
MemStrm.Free;
end;
ADOTable1.Post;
end;