下面是我存储和读取图片的方法,图片为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;