unit ads_BitmapResize; {
} interface Uses Windows, Graphics; //BitmapResize,BitmapResizeProportional Function BitmapResize( BitmapSource : TBitmap; BitmapOut : TBitmap; Percent : Integer): Boolean; Overload; Function BitmapResize( Bitmap : TBitmap; Percent : Integer): Boolean; Overload; Function BitmapResize( BitmapFileIn : String; BitmapFileOut: String; Percent : Integer): Boolean; Overload; Function BitmapResize( BitmapFile : String; Percent : Integer): Boolean; Overload; Function BitmapResize( BitmapSource : TBitmap; BitmapOut : TBitmap; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Function BitmapResize( BitmapFileIn : String; BitmapFileOut: String; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Function BitmapResize( Bitmap : TBitmap; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Function BitmapResize( BitmapFile : String; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Function BitmapResizeProportional( Bitmap : TBitmap; Percent : Integer): Boolean; Overload; Function BitmapResizeProportional( BitmapFile : String; Percent : Integer): Boolean; Overload; Function BitmapResizeProportional( BitmapSource : TBitmap; BitmapOut : TBitmap; Percent : Integer): Boolean; Overload; Function BitmapResizeProportional( BitmapFileIn : String; BitmapFileOut: String; Percent : Integer): Boolean; Overload; Function BitmapResizeProportional( Bitmap : TBitmap; NewDimension : Integer; IsWidth : Boolean): Boolean; Overload; Function BitmapResizeProportional( BitmapSource : TBitmap; BitmapOut : TBitmap; NewDimension : Integer; IsWidth : Boolean): Boolean; Overload; Function BitmapResizeProportional( BitmapFileIn : String; BitmapFileOut: String; NewDimension : Integer; IsWidth : Boolean): Boolean; Overload; implementation Uses Types, SysUtils; (* Function BitmapResizeProportional( BitmapSource : TBitmap; BitmapOut : TBitmap; NewDimension : Integer; IsWidth : Boolean): Boolean; Var inWidthOld : Integer; inWidthNew : Integer; inHeightOld : Integer; inHeightNew : Integer; Bitmap : TBitmap; begin Bitmap := TBitmap.Create; Try Try {Create a new bitmap and set its size} inWidthOld := BitmapSource.Width; inHeightOld := BitmapSource.Height; If IsWidth Then Begin inWidthNew := NewDimension; inHeightNew := (inHeightOld * inWidthNew) div inWidthOld; End Else Begin inHeightNew := NewDimension; inWidthNew := (inWidthOld * inHeightNew) div inHeightOld; End; Bitmap.Width := inWidthNew; Bitmap.Height := inHeightNew; {Copy the palette} Bitmap.Palette:=BitmapSource.Palette; {Delete the lines needed to shrink} SetStretchBltMode(Bitmap.Canvas.Handle,STRETCH_DELETESCANS); {Resize it} Bitmap.Canvas.Copyrect(Rect(0, 0, inWidthNew, inHeightNew), BitmapSource.Canvas, Rect(0, 0, BitmapSource.Width, BitmapSource.Height)); {Copy the palette} Bitmap.Palette:=BitmapSource.Palette; {Assign the new smaller bitmap} BitmapOut.Assign(Bitmap); {Free the bitmap} Result := True; Except Result := False; Raise; End; Finally Bitmap.Free; End; end; *) Function BitmapResizeProportional( BitmapFileIn : String; BitmapFileOut: String; NewDimension : Integer; IsWidth : Boolean): Boolean; Overload; Var BitmapSource : TBitmap; BitmapOut : TBitmap; Begin Result := False; If Not FileExists(BitmapFileIn) Then Exit; BitmapSource := TBitmap.Create(); BitmapOut := TBitmap.Create(); Try BitmapSource.LoadFromFile(BitmapFileIn); Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; NewDimension , //NewDimension : Integer; IsWidth );//IsWidth : Boolean): Boolean; Overload; If Result Then Begin If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut); BitmapOut.SaveToFile(BitmapFileOut); End; Finally BitmapSource.Free; BitmapOut .Free; End; End; Function BitmapResizeProportional( Bitmap : TBitmap; NewDimension : Integer; IsWidth : Boolean): Boolean; Overload; Var BitmapSource : TBitmap; BitmapOut : TBitmap; Begin BitmapSource := TBitmap.Create(); BitmapOut := TBitmap.Create(); Try BitmapSource.Assign(Bitmap); Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; NewDimension , //NewDimension : Integer; IsWidth );//IsWidth : Boolean): Boolean; Overload; If Result Then Begin Bitmap.Assign(BitmapOut); End; Finally BitmapSource.Free; BitmapOut .Free; End; End; Function BitmapResizeProportional( BitmapSource : TBitmap; BitmapOut : TBitmap; Percent : Integer): Boolean; Overload; Var inWidthOld : Integer; NewDimension : Integer; IsWidth : Boolean; Begin Result := False; If Percent < 1 Then Exit; If BitmapSource = nil Then Exit; IsWidth := True; inWidthOld := BitmapSource.Width; NewDimension := (Percent * inWidthOld) div 100; Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; NewDimension , //NewDimension : Integer; IsWidth );//IsWidth : Boolean): Boolean; Overload; End; Function BitmapResizeProportional( BitmapFileIn : String; BitmapFileOut: String; Percent : Integer): Boolean; Overload; Var BitmapSource : TBitmap; BitmapOut : TBitmap; Begin Result := False; If Not FileExists(BitmapFileIn) Then Exit; BitmapSource := TBitmap.Create(); BitmapOut := TBitmap.Create(); Try BitmapSource.LoadFromFile(BitmapFileIn); Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; Percent );//Percent : Integer): Boolean; Overload; If Result Then Begin If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut); BitmapOut.SaveToFile(BitmapFileOut); End; Finally BitmapSource.Free; BitmapOut .Free; End; End; Function BitmapResizeProportional( Bitmap : TBitmap; Percent : Integer): Boolean; Overload; Var BitmapSource : TBitmap; BitmapOut : TBitmap; Begin BitmapSource := TBitmap.Create(); BitmapOut := TBitmap.Create(); Try BitmapSource.Assign(Bitmap); Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; Percent );//Percent : Integer): Boolean; Overload; If Result Then Begin Bitmap.Assign(BitmapOut); End; Finally BitmapSource.Free; BitmapOut .Free; End; End; Function BitmapResize( BitmapSource : TBitmap; BitmapOut : TBitmap; NewHeight : Integer; NewWidth : Integer): Boolean; Var inWidthOld : Integer; inHeightOld : Integer; Bitmap : TBitmap; begin Bitmap := TBitmap.Create; Try Try inWidthOld := BitmapSource.Width; inHeightOld := BitmapSource.Height; Bitmap.Width := NewWidth; Bitmap.Height := NewHeight; Bitmap.Palette:=BitmapSource.Palette; SetStretchBltMode(Bitmap.Canvas.Handle,STRETCH_DELETESCANS); Bitmap.Canvas.Copyrect(Rect(0, 0, NewWidth, NewHeight), BitmapSource.Canvas, Rect(0, 0, inWidthOld, inHeightOld)); Bitmap.Palette:=BitmapSource.Palette; BitmapOut.Assign(Bitmap); Result := True; Except Result := False; Raise; End; Finally Bitmap.Free; End; end; Function BitmapResizeProportional( BitmapSource : TBitmap; BitmapOut : TBitmap; NewDimension : Integer; IsWidth : Boolean): Boolean; Var inWidthOld : Integer; inWidthNew : Integer; inHeightOld : Integer; inHeightNew : Integer; begin inWidthOld := BitmapSource.Width; inHeightOld := BitmapSource.Height; If IsWidth Then Begin inWidthNew := NewDimension; inHeightNew := (inHeightOld * inWidthNew) div inWidthOld; End Else Begin inHeightNew := NewDimension; inWidthNew := (inWidthOld * inHeightNew) div inHeightOld; End; Result := BitmapResize( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; inHeightNew , //NewHeight : Integer; inWidthNew );//NewWidth : Integer): Boolean; End; Function BitmapResize( Bitmap : TBitmap; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Var BitmapOut : TBitmap; Begin BitmapOut := TBitmap.Create(); Try Result := BitmapResize( Bitmap , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; NewHeight , //NewHeight : Integer; NewWidth );//NewWidth : Integer): Boolean; If Result Then Begin Bitmap.Assign(BitmapOut); End; Finally BitmapOut.Free; End; End; Function BitmapResize( BitmapFileIn : String; BitmapFileOut: String; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Var BitmapSource : TBitmap; BitmapOut : TBitmap; Begin Result := False; If Not FileExists(BitmapFileIn) Then Exit; BitmapSource := TBitmap.Create(); BitmapOut := TBitmap.Create(); Try BitmapSource.LoadFromFile(BitmapFileIn); Result := BitmapResize( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; NewHeight , //NewHeight : Integer; NewWidth );//NewWidth : Integer): Boolean; Overload; If Result Then Begin If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut); BitmapOut.SaveToFile(BitmapFileOut); End; Finally BitmapSource.Free; BitmapOut .Free; End; End; Function BitmapResize( BitmapFile : String; NewHeight : Integer; NewWidth : Integer): Boolean; Overload; Var Bitmap : TBitmap; Begin Result := False; If Not FileExists(BitmapFile) Then Exit; Bitmap := TBitmap.Create(); Try Bitmap.LoadFromFile(BitmapFile); Result := BitmapResize( Bitmap , //Bitmap : TBitmap; NewHeight , //NewHeight : Integer; NewWidth );//NewWidth : Integer): Boolean; Overload; If Result Then Begin If FileExists(BitmapFile) Then DeleteFile(BitmapFile); Bitmap.SaveToFile(BitmapFile); End; Finally Bitmap.Free; End; End; Function BitmapResize( BitmapSource : TBitmap; BitmapOut : TBitmap; Percent : Integer): Boolean; Overload; Begin Result := BitmapResizeProportional( BitmapSource , //BitmapSource : TBitmap; BitmapOut , //BitmapOut : TBitmap; Percent );//Percent : Integer): Boolean; Overload; End; Function BitmapResize( Bitmap : TBitmap; Percent : Integer): Boolean; Overload; Begin Result := BitmapResizeProportional( Bitmap , //Bitmap : TBitmap; Percent );//Percent : Integer): Boolean; Overload; End; Function BitmapResize( BitmapFileIn : String; BitmapFileOut: String; Percent : Integer): Boolean; Overload; Begin Result := BitmapResizeProportional( BitmapFileIn , //BitmapFileIn : String; BitmapFileOut, //BitmapFileOut: String; Percent );//Percent : Integer): Boolean; Overload; End; Function BitmapResize( BitmapFile : String; Percent : Integer): Boolean; Overload; Begin Result := BitmapResizeProportional( BitmapFile , //BitmapFile : String; Percent );//Percent : Integer): Boolean; Overload; End; Function BitmapResizeProportional( BitmapFile : String; Percent : Integer): Boolean; Overload; Begin Result := BitmapResizeProportional( BitmapFile , //BitmapFileIn : String; BitmapFile , //BitmapFileOut: String; Percent );//Percent : Integer): Boolean; Overload; End; end. //