下面是我存储和读取图片的方法,图片为bmp格式,为什么我读取显示出来的图片就不全了呢,下半部分综是空白,SQL和Oracle数据库都实验过了,用Oracle库时我去库里面看那图片了,用PL\SQL看的,图片是全的,怎么读出来显示就不全了啊,迫切需要帮助,歇歇procedure TForm1.Button2Click(Sender: TObject);
var
PBmp,PBmp1: TBitmap; //BMP图片
PStream, PStream1, PStream2: TMemoryStream; //
PJpeg, PJpeg1, PJpeg2: TJPEGImage; //Jpeg、Jpg图片
FileStr: string;
begin
if OpenPictureDialog1.Execute then
FileStr := OpenPictureDialog1.FileName
else
Exit;
PBmp := TBitmap.Create;
Pjpeg := TJPEGImage.Create;
PStream := TMemoryStream.Create;
PBmp.LoadFromFile(FileStr);
PJpeg.Assign(PBmp);
PJpeg.Compress;
PJpeg.SaveToStream(PStream);
//存储-----------------
with Query1 do
begin
Close;
sql.Clear;
SQL.Add('insert into tmp_gone (personimg) values(:p_1)');
ParamByName('p_1').LoadFromStream(PStream, ftblob);
try
ExecSQL;
ShowMessage('ok');
except
ShowMessage('no');
end;
end;
//读取=============================
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from tmp_gone');
Open;
PStream1 := TMemoryStream.Create();
PStream2 := TMemoryStream.Create();
PStream2 := PStream;
//将图像字段保存到流中
TBlobField(Fieldbyname('personimg')).SaveToStream(PStream1);
////给留定位
PStream1.Position := 0;
PJpeg1 := TJpegImage.Create;
PJpeg1.LoadFromStream(PStream1);
Image2.Picture.Bitmap.Assign(PJpeg1);
end;
end;
var
PBmp,PBmp1: TBitmap; //BMP图片
PStream, PStream1, PStream2: TMemoryStream; //
PJpeg, PJpeg1, PJpeg2: TJPEGImage; //Jpeg、Jpg图片
FileStr: string;
begin
if OpenPictureDialog1.Execute then
FileStr := OpenPictureDialog1.FileName
else
Exit;
PBmp := TBitmap.Create;
Pjpeg := TJPEGImage.Create;
PStream := TMemoryStream.Create;
PBmp.LoadFromFile(FileStr);
PJpeg.Assign(PBmp);
PJpeg.Compress;
PJpeg.SaveToStream(PStream);
//存储-----------------
with Query1 do
begin
Close;
sql.Clear;
SQL.Add('insert into tmp_gone (personimg) values(:p_1)');
ParamByName('p_1').LoadFromStream(PStream, ftblob);
try
ExecSQL;
ShowMessage('ok');
except
ShowMessage('no');
end;
end;
//读取=============================
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from tmp_gone');
Open;
PStream1 := TMemoryStream.Create();
PStream2 := TMemoryStream.Create();
PStream2 := PStream;
//将图像字段保存到流中
TBlobField(Fieldbyname('personimg')).SaveToStream(PStream1);
////给留定位
PStream1.Position := 0;
PJpeg1 := TJpegImage.Create;
PJpeg1.LoadFromStream(PStream1);
Image2.Picture.Bitmap.Assign(PJpeg1);
end;
end;
解决方案 »
- 实用性较强的问题,大家讨论一下
- 问个Socket通信的问题
- 50分求助,有谁用过 TActionMainMenuBar和TActionManager之类的东东。
- 关于控件的高难度问题,寻求解决方案,高手请进!!
- 在IIS建虚拟目录运行时报“OLE error 80005008”?原因何在??
- 初学都的一个问题?
- 问两个小问题,关于TableScope与HDC的。
- delphi 微信接口开发
- 求救!!!!哪里有下载installshield for delphi5????
- 控件
- 请教下各位,关于进行复杂查询后,是否要用数据库表格来保存的问题
- 请问大家能在delphi6.0里显示gif动画的控件哪里有?
////给留定位
PStream1.Position := 0;
上面的PStream是我转换图片文件时生成的
读取时我用的PStream1