如何改变一个BITMAP/JPEG图片的整个幅面尺寸的大小?(100分)

  • 主题发起人 主题发起人 peterluolaw
  • 开始时间 开始时间
P

peterluolaw

Unregistered / Unconfirmed
GUEST, unregistred user!
如何改变一个BITMAP/JPEG图片的整个幅面尺寸的大小?比如放大或者缩小
整个图片的幅面尺寸.我正在试着在DELPHI中扫描图片,但实际生成的图片
(BITMAP类的)幅面尺寸相当大!所以我想缩小整个图片的幅面尺寸.请问应
该做才行?请各位赐教.
 
procedure StretchDraw(const Rect: TRect; Graphic: TGraphic );
用它可以把你的图片放大缩小
 
不是很完善,实际上你可以只写一个缩放的就行了,根据比率来放大还是缩小.下面只是一个
思路和简单可行.
procedure TForm2.Zoom_In(Img: TImage;const Times:Integer);
var
Bmp :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Width :=Img.Picture.Bitmap.Width*Times;
Bmp.Height :=Img.Picture.Bitmap.Height*Times;
StretchBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,
Img.Picture.Bitmap.Canvas.Handle,0,0,Img.Picture.Bitmap.Width,Img.Picture.Bitmap.Height,SRCCOPY);
Img.AutoSize :=True;
Img.Picture.Bitmap.Assign(Bmp);
SecondPic.Assign(Img.Picture);
Bmp.Free;
end;

procedure TForm2.Zoom_Out(Img: TImage;const Times:Integer);
var
Bmp :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Width :=Img.Picture.Bitmap.Width div Times;
Bmp.Height :=Img.Picture.Bitmap.Height div Times;
StretchBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,
Img.Picture.Bitmap.Canvas.Handle,0,0,Img.Picture.Bitmap.Width,Img.Picture.Bitmap.Height,SRCCOPY);
Img.AutoSize :=True;
Img.Picture.Bitmap.Assign(Bmp);
SecondPic.Assign(Img.Picture);
Bmp.Free;
end;
 
不好意思,现在才你回信.问题已经解决,只是这种方法缩小的图像中有许多的色块,图像不够平滑.
 
后退
顶部