unit ads_BitmapCrop; {
}
interface
Uses
Windows, Graphics;
Function BitmapToTopHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Function BitmapToTopHalf(
Bitmap : TBitmap
): Boolean; Overload;
Function BitmapToTopHalf(
BitmapFileIn : String;
BitmapFileOut: String
): Boolean; Overload;
Function BitmapToTopHalf(
BitmapFile : String
): Boolean; Overload;
Function BitmapToBotHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Function BitmapToBotHalf(
Bitmap : TBitmap
): Boolean; Overload;
Function BitmapToBotHalf(
BitmapFileIn : String;
BitmapFileOut: String
): Boolean; Overload;
Function BitmapToBotHalf(
BitmapFile : String
): Boolean; Overload;
Function BitmapToLeftHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Function BitmapToLeftHalf(
Bitmap : TBitmap
): Boolean; Overload;
Function BitmapToLeftHalf(
BitmapFileIn : String;
BitmapFileOut: String
): Boolean; Overload;
Function BitmapToLeftHalf(
BitmapFile : String
): Boolean; Overload;
Function BitmapToRightHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Function BitmapToRightHalf(
Bitmap : TBitmap
): Boolean; Overload;
Function BitmapToRightHalf(
BitmapFileIn : String;
BitmapFileOut: String
): Boolean; Overload;
Function BitmapToRightHalf(
BitmapFile : String
): Boolean; Overload;
Function BitmapCrop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Rect : TRect
): Boolean; Overload;
Function BitmapCrop(
BitmapFileIn : String;
BitmapFileOut: String;
Rect : TRect
): Boolean; Overload;
Function BitmapCrop(
Bitmap : TBitmap;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Function BitmapCrop(
Bitmap : TBitmap;
Rect : TRect
): Boolean; Overload;
Function BitmapCrop(
BitmapFile : String;
Rect : TRect
): Boolean; Overload;
Function BitmapCrop(
BitmapFileIn : String;
BitmapFileOut: String;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Function BitmapCrop(
BitmapFile : String;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Function BitmapCrop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Function BitmapTrimTop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimTop(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimTop(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimTop(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimLeft(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimLeft(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimLeft(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimLeft(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimBottom(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimBottom(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimBottom(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimBottom(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimRight(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimRight(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimRight(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimRight(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimFromSide(
Bitmap : TBitmap;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
Function BitmapTrimFromSide(
BitmapFile : String;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
Function BitmapTrimFromSide(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
Function BitmapTrimFromSide(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
//*****************************************
Function BitmapTrimHeightTo(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimHeightTo(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimHeightTo(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimHeightTo(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
//*****************************************
Function BitmapTrimWidthTo(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimWidthTo(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimWidthTo(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Function BitmapTrimWidthTo(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
implementation
Uses Types, SysUtils;
Function BitmapTrimFromSide(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean;
Var
inWidthOld : Integer;
inWidthNew : Integer;
inHeightOld : Integer;
inHeightNew : Integer;
Bitmap : TBitmap;
SrcTopAdj : Integer;
SrcLeftAdj : Integer;
SrcWidthAdj : Integer;
SrcHgtAdj : Integer;
begin
Result := False;
Bitmap := TBitmap.Create;
Try
Try
{Create a new bitmap and set its size}
inWidthOld := BitmapSource.Width;
inHeightOld := BitmapSource.Height;
If IsWidth Then
Begin
If IsEnd Then
Begin
SrcTopAdj := 0;
SrcLeftAdj := 0;
SrcWidthAdj := inWidthOld-Pixels;
SrcHgtAdj := inHeightOld;
inWidthNew := inWidthOld-Pixels;
inHeightNew := inHeightOld;
End
Else
Begin
SrcTopAdj := 0;
SrcLeftAdj := Pixels;
SrcWidthAdj := inWidthOld;
SrcHgtAdj := inHeightOld;
inWidthNew := inWidthOld-Pixels;
inHeightNew := inHeightOld;
End;
If inWidthNew < 1 Then Exit;
End
Else
Begin
If IsEnd Then
Begin
SrcTopAdj := 0;
SrcLeftAdj := 0;
SrcWidthAdj := inWidthOld;
SrcHgtAdj := inHeightOld-Pixels;
inWidthNew := inWidthOld;
inHeightNew := inHeightOld-Pixels;
End
Else
Begin
SrcTopAdj := Pixels;
SrcLeftAdj := 0;
SrcWidthAdj := inWidthOld;
SrcHgtAdj := inHeightOld;
inWidthNew := inWidthOld;
inHeightNew := inHeightOld-Pixels;
End;
If inHeightNew < 1 Then Exit;
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(SrcLeftAdj,
SrcTopAdj,
SrcWidthAdj,
SrcHgtAdj));
{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 BitmapTrimFromSide(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : 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 :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : 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 BitmapTrimFromSide(
Bitmap : TBitmap;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
Var
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Begin
BitmapSource := TBitmap.Create();
BitmapOut := TBitmap.Create();
Try
BitmapSource.Assign(Bitmap);
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapTrimFromSide(
BitmapFile : String;
Pixels : Integer;
IsWidth : Boolean;
IsEnd : Boolean
): Boolean; Overload;
Var
Bitmap : TBitmap;
Begin
Result := False;
If Not FileExists(BitmapFile) Then Exit;
Bitmap := TBitmap.Create();
Try
Bitmap.LoadFromFile(BitmapFile);
Result :=
BitmapTrimFromSide(
Bitmap , //Bitmap : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFile) Then
DeleteFile(BitmapFile);
Bitmap.SaveToFile(BitmapFile);
End;
Finally
Bitmap.Free;
End;
End;
Function BitmapTrimTop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimTop(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := False;
Result :=
BitmapTrimFromSide(
Bitmap , //Bitmap : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimTop(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapFileIn , //BitmapFileIn : String;
BitmapFileOut, //BitmapFileOut: String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimTop(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapFile , //BitmapFile : String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapTrimLeft(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimLeft(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := False;
Result :=
BitmapTrimFromSide(
Bitmap , //Bitmap : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimLeft(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapFileIn , //BitmapFileIn : String;
BitmapFileOut, //BitmapFileOut: String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimLeft(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := False;
Result :=
BitmapTrimFromSide(
BitmapFile , //BitmapFile : String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapTrimBottom(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimBottom(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := True;
Result :=
BitmapTrimFromSide(
Bitmap , //Bitmap : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimBottom(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapFileIn , //BitmapFileIn : String;
BitmapFileOut, //BitmapFileOut: String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimBottom(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapFile , //BitmapFile : String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapTrimRight(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimRight(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := True;
Result :=
BitmapTrimFromSide(
Bitmap , //Bitmap : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimRight(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapFileIn , //BitmapFileIn : String;
BitmapFileOut, //BitmapFileOut: String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
Function BitmapTrimRight(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := True;
Result :=
BitmapTrimFromSide(
BitmapFile , //BitmapFile : String;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapCrop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Var
TrimTop : Integer;
TrimLeft : Integer;
TrimRight : Integer;
TrimBot : Integer;
SrcHeight : Integer;
SrcWidth : Integer;
Bitmap : TBitmap;
boRetval : Boolean;
Begin
Result := False;
If BitmapSource = nil Then Exit;
SrcHeight := BitmapSource.Height;
SrcWidth := BitmapSource.Width;
If Bottom > SrcHeight Then Bottom := SrcHeight;
If Right > SrcWidth Then Right := SrcWidth;
If Top < 0 Then Top := 0;
If Left < 0 Then Left := 0;
If (Top=0) And (Left=0) And (Bottom=SrcHeight) And (Right=SrcWidth) Then
Begin
BitmapOut.Assign(BitmapSource);
Result := True;
Exit;
End;
TrimTop := Top;
TrimLeft := Left;
TrimRight := SrcWidth-Right;
TrimBot := SrcHeight-Bottom;
Bitmap := TBitmap.Create();
Try
Bitmap.Assign(BitmapSource);
Result := True;
If TrimTop > 0 Then
Begin
boRetval :=
BitmapTrimTop(
Bitmap , //Bitmap : TBitmap;
TrimTop //Pixels : Integer
);//): Boolean; Overload;
If Not boRetval Then
Begin
Result := False;
Exit;
End;
End;
If TrimLeft > 0 Then
Begin
boRetval :=
BitmapTrimLeft(
Bitmap , //Bitmap : TBitmap;
TrimLeft //Pixels : Integer
);//): Boolean; Overload;
If Not boRetval Then
Begin
Result := False;
Exit;
End;
End;
If TrimBot > 0 Then
Begin
boRetval :=
BitmapTrimBottom(
Bitmap , //Bitmap : TBitmap;
TrimBot //Pixels : Integer
);//): Boolean; Overload;
If Not boRetval Then
Begin
Result := False;
Exit;
End;
End;
If TrimRight > 0 Then
Begin
boRetval :=
BitmapTrimRight(
Bitmap , //Bitmap : TBitmap;
TrimRight //Pixels : Integer
);//): Boolean; Overload;
If Not boRetval Then
Begin
Result := False;
Exit;
End;
End;
BitmapOut.Assign(Bitmap);
Result := True;
Finally
Bitmap.Free;
End;
End;
Function BitmapCrop(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Rect : TRect
): Boolean; Overload;
Var
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer;
Begin
Top := Rect.Top;
Left := Rect.Left;
Bottom := Rect.Bottom;
Right := Rect.Right;
Result :=
BitmapCrop(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
End;
Function BitmapCrop(
BitmapFileIn : String;
BitmapFileOut: String;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : 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 :=
BitmapCrop(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : 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 BitmapCrop(
BitmapFileIn : String;
BitmapFileOut: String;
Rect : TRect
): Boolean; Overload;
Var
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer;
Begin
Top := Rect.Top;
Left := Rect.Left;
Bottom := Rect.Bottom;
Right := Rect.Right;
Result :=
BitmapCrop(
BitmapFileIn , //BitmapFileIn : String;
BitmapFileOut, //BitmapFileOut: String;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
End;
Function BitmapCrop(
Bitmap : TBitmap;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Var
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Begin
BitmapSource := TBitmap.Create();
BitmapOut := TBitmap.Create();
Try
BitmapSource.Assign(Bitmap);
Result :=
BitmapCrop(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapCrop(
Bitmap : TBitmap;
Rect : TRect
): Boolean; Overload;
Var
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer;
Begin
Top := Rect.Top;
Left := Rect.Left;
Bottom := Rect.Bottom;
Right := Rect.Right;
Result :=
BitmapCrop(
Bitmap , //Bitmap : TBitmap;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
End;
Function BitmapCrop(
BitmapFile : String;
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer
): Boolean; Overload;
Var
Bitmap : TBitmap;
Begin
Result := False;
If Not FileExists(BitmapFile) Then Exit;
Bitmap := TBitmap.Create();
Try
Bitmap.LoadFromFile(BitmapFile);
Result :=
BitmapCrop(
Bitmap , //Bitmap : TBitmap;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFile) Then DeleteFile(BitmapFile);
Bitmap.SaveToFile(BitmapFile);
End;
Finally
Bitmap.Free;
End;
End;
Function BitmapCrop(
BitmapFile : String;
Rect : TRect
): Boolean; Overload;
Var
Top : Integer;
Left : Integer;
Bottom : Integer;
Right : Integer;
Begin
Top := Rect.Top;
Left := Rect.Left;
Bottom := Rect.Bottom;
Right := Rect.Right;
Result :=
BitmapCrop(
BitmapFile , //BitmapFile : String;
Top , //Top : Integer;
Left , //Left : Integer;
Bottom , //Bottom : Integer;
Right //Right : Integer
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapToTopHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Var
Pixels : Integer;
Begin
Pixels := BitmapSource.Height div 2;
Result :=
BitmapTrimBottom(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapToTopHalf(
Bitmap : TBitmap
): Boolean; Overload;
Var
BitmapOut : TBitmap;
Begin
BitmapOut := TBitmap.Create();
Try
Result :=
BitmapToTopHalf(
Bitmap , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapOut.Free;
End;
End;
Function BitmapToTopHalf(
BitmapFileIn : String;
BitmapFileOut: String
): 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 :=
BitmapToTopHalf(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap;
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut);
BitmapOut.SaveToFile(BitmapFileOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapToTopHalf(
BitmapFile : String
): Boolean; Overload;
Begin
Result :=
BitmapToTopHalf(
BitmapFile , //BitmapFileIn : String;
BitmapFile //BitmapFileOut: String
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapToBotHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Var
Pixels : Integer;
Begin
Pixels := BitmapSource.Height div 2;
Result :=
BitmapTrimTop(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapToBotHalf(
Bitmap : TBitmap
): Boolean; Overload;
Var
BitmapOut : TBitmap;
Begin
BitmapOut := TBitmap.Create();
Try
Result :=
BitmapToBotHalf(
Bitmap , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapOut.Free;
End;
End;
Function BitmapToBotHalf(
BitmapFileIn : String;
BitmapFileOut: String
): 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 :=
BitmapToBotHalf(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap;
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut);
BitmapOut.SaveToFile(BitmapFileOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapToBotHalf(
BitmapFile : String
): Boolean; Overload;
Begin
Result :=
BitmapToBotHalf(
BitmapFile , //BitmapFileIn : String;
BitmapFile //BitmapFileOut: String
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapToLeftHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Var
Pixels : Integer;
Begin
Pixels := BitmapSource.Width div 2;
Result :=
BitmapTrimRight(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapToLeftHalf(
Bitmap : TBitmap
): Boolean; Overload;
Var
BitmapOut : TBitmap;
Begin
BitmapOut := TBitmap.Create();
Try
Result :=
BitmapToLeftHalf(
Bitmap , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapOut.Free;
End;
End;
Function BitmapToLeftHalf(
BitmapFileIn : String;
BitmapFileOut: String
): 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 :=
BitmapToLeftHalf(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap;
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut);
BitmapOut.SaveToFile(BitmapFileOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapToLeftHalf(
BitmapFile : String
): Boolean; Overload;
Begin
Result :=
BitmapToLeftHalf(
BitmapFile , //BitmapFileIn : String;
BitmapFile //BitmapFileOut: String
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapToRightHalf(
BitmapSource : TBitmap;
BitmapOut : TBitmap
): Boolean; Overload;
Var
Pixels : Integer;
Begin
Pixels := BitmapSource.Width div 2;
Result :=
BitmapTrimLeft(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapToRightHalf(
Bitmap : TBitmap
): Boolean; Overload;
Var
BitmapOut : TBitmap;
Begin
BitmapOut := TBitmap.Create();
Try
Result :=
BitmapToRightHalf(
Bitmap , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap
);//): Boolean; Overload;
If Result Then
Begin
Bitmap.Assign(BitmapOut);
End;
Finally
BitmapOut.Free;
End;
End;
Function BitmapToRightHalf(
BitmapFileIn : String;
BitmapFileOut: String
): 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 :=
BitmapToRightHalf(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut //BitmapOut : TBitmap;
);//): Boolean; Overload;
If Result Then
Begin
If FileExists(BitmapFileOut) Then DeleteFile(BitmapFileOut);
BitmapOut.SaveToFile(BitmapFileOut);
End;
Finally
BitmapSource.Free;
BitmapOut .Free;
End;
End;
Function BitmapToRightHalf(
BitmapFile : String
): Boolean; Overload;
Begin
Result :=
BitmapToRightHalf(
BitmapFile , //BitmapFileIn : String;
BitmapFile //BitmapFileOut: String
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapTrimHeightTo(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := False;
IsEnd := True;
If Pixels > BitmapSource.Height Then Pixels := BitmapSource.Height;
If Pixels < 1 Then Pixels := 1;
Pixels := BitmapSource.Height - Pixels;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimHeightTo(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Begin
Result :=
BitmapTrimHeightTo(
Bitmap, //BitmapSource : TBitmap;
Bitmap, //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapTrimHeightTo(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : 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 :=
BitmapTrimHeightTo(
BitmapSource, //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : 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 BitmapTrimHeightTo(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Begin
Result :=
BitmapTrimHeightTo(
BitmapFile, //BitmapFileIn : String;
BitmapFile, //BitmapFileOut: String;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
//******************************************************
Function BitmapTrimWidthTo(
BitmapSource : TBitmap;
BitmapOut : TBitmap;
Pixels : Integer
): Boolean; Overload;
Var
IsWidth : Boolean;
IsEnd : Boolean;
Begin
IsWidth := True;
IsEnd := True;
If Pixels > BitmapSource.Width Then Pixels := BitmapSource.Width;
If Pixels < 1 Then Pixels := 1;
Pixels := BitmapSource.Width - Pixels;
Result :=
BitmapTrimFromSide(
BitmapSource , //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels , //Pixels : Integer;
IsWidth , //IsWidth : Boolean;
IsEnd //IsEnd : Boolean
);//): Boolean;
End;
Function BitmapTrimWidthTo(
Bitmap : TBitmap;
Pixels : Integer
): Boolean; Overload;
Begin
Result :=
BitmapTrimWidthTo(
Bitmap, //BitmapSource : TBitmap;
Bitmap, //BitmapOut : TBitmap;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
Function BitmapTrimWidthTo(
BitmapFileIn : String;
BitmapFileOut: String;
Pixels : 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 :=
BitmapTrimWidthTo(
BitmapSource, //BitmapSource : TBitmap;
BitmapOut , //BitmapOut : TBitmap;
Pixels //Pixels : 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 BitmapTrimWidthTo(
BitmapFile : String;
Pixels : Integer
): Boolean; Overload;
Begin
Result :=
BitmapTrimWidthTo(
BitmapFile, //BitmapFileIn : String;
BitmapFile, //BitmapFileOut: String;
Pixels //Pixels : Integer
);//): Boolean; Overload;
End;
end.
//