在oracle8.x +delphi5 环境中我写了下边程序,
增加部分
procedure TqxxpForm.TlbAddClick(Sender: TObject);
Var
  FileExt:String;
  jpeg1:TJPEGImage;
  stream: TBlobStream;
  TempJPEG:TJPEGImage;
  S:String;
  TempBool:Boolean;
begin  //CheckQuery(curquery,'');
  if qxbh='' then Exit;
  OPenDlg.Filter := '(*.bmp)|*.bmp|(*.jpg)|*.jpg|(*.jpeg)|*.jpeg';
  If OPenDlg.Execute=False then Exit;
    FileExt:=ExtractFileExt(OPenDlg.FileName);
  if  FileExt<>'.jpeg'  then
  Begin
    TempJPEG:= TJPEGImage.Create;
    try
      img.Picture.LoadFromFile(OPenDlg.FileName);
      TempJPEG.Assign(img.Picture.Graphic);
      s:= ChangeFileExt(OPenDlg.FileName,'.jpeg');
      TempJPEG.SaveToFile(S);
    finally
      TempJPEG.Free;
    end
  end
  else
  begin  s:=OPenDlg.FileName;
  IMg.Picture.LoadFromFile(s);
  end;
    jpeg1:=TJPEGImage.Create;
    jpeg1.LoadFromFile(s);
   //检查是否已经有照片  if not (Qry1.State in [dsInsert, dsEdit]) then
  begin
    Qry1.Active :=true;
    Qry1.APPEND;
  end;
  Qry1.FieldByName('qxbh').value:= qxbh;
  try
    stream:=TBlobStream.Create(Qry1.fieldbyname('zp') as TBlobField,bmReadWrite);
    jpeg1.SaveToStream(stream);
  finally
    stream.Free;
  end;
  qry1.Post ;
  //TlbRefClick();
  TlbRefClick(TlbRef);
end;
显示部分
  OpenQry1;
  Qry1.First;
  i :=0;
  while not Qry1.Eof do
  begin
    image :=TMyimage.Create(self);
    image.Parent :=ScrollBox;
    image.ShowHint :=true;
    image.qxbh :=Qry1.fieldbyname('qxbh').AsString;
    image.xh :=Qry1.fieldbyname('xh').AsInteger;
    image.xh1 :=Qry1.fieldbyname('xh1').AsInteger;
    //image.Name :='image'+inttostr(i);
    image.Visible :=true;
    image.Height :=137;
    image.Width :=105;
    image.AutoSize :=false;
    image.Stretch :=true;
    image.Align :=altop;
    {
    if i=0 then
      image.Align :=alclient
    else
      image.Align :=alleft;
      //image.Left  := image.Width*i;
    }
    try
      stream:=TBlobStream.Create(Qry1.fieldbyname('zp') as TBlobField,bmRead);
      jpeg:=TJPEGImage.Create ;
      jpeg.LoadFromStream(stream);
      image.Picture.Assign(jpeg);    finally
      stream.Free ;
      jpeg.Free;
    end;
    inc(i);
    Qry1.Next;
  end;
问题是图片小的时候能正常显示但图片大于1M后图片只显示部分,
我想在保存前先进行压缩再保存,如何实现,请高手指点