Image ===== TImage is a data type that holds an image. This is used manipulate and process an image such as resizing, rotating, bluring and much more. Or simply get/set a pixel color at a given (x,y) coord. ----- TImage.Create ------------- ``` function TImage.Create: TImage; static; ``` ----- TImage.Create ------------- ``` function TImage.Create(Width, Height: Integer): TImage; static; ``` ----- TImage.Create ------------- ``` function TImage.Create(FileName: String): TImage; static; ``` ----- TImage.CreateFromString ----------------------- ``` function TImage.CreateFromString(Str: String): TImage; static; ``` ----- TImage.CreateFromZip -------------------- ``` function TImage.CreateFromZip(ZipFileName, ZipEntryName: String): TImage; static; ``` Load an image from a file inside a zip file. ----- TImage.CreateFromMatrix ----------------------- ``` function TImage.CreateFromMatrix(Mat: TIntegerMatrix): TImage; static; ``` ----- TImage.CreateFromMatrix ----------------------- ``` function TImage.CreateFromMatrix(Mat: TSingleMatrix; ColorMapType: Integer = 0): TImage; static; ``` ----- TImage.Free ----------- ``` procedure TImage.Free; ``` ----- TImage.Data ----------- ``` function TImage.Data: PColorBGRA; ``` ----- TImage.Width ------------ ``` function TImage.Width: Integer; ``` ----- TImage.Height ------------- ``` function TImage.Height: Integer; ``` ----- TImage.Center ------------- ``` function TImage.Center: TPoint; ``` ----- TImage.GetDefaultPixel ---------------------- ``` function TImage.GetDefaultPixel: TColorBGRA; ``` ----- TImage.SetDefaultPixel ---------------------- ``` procedure TImage.SetDefaultPixel(Value: TColorBGRA); ``` ----- TImage.GetDrawColor ------------------- ``` function TImage.GetDrawColor: TColor; ``` Returns the current drawing color. ```{note} Red is the default value. ``` ----- TImage.SetDrawColor ------------------- ``` procedure TImage.SetDrawColor(Color: TColor); ``` Sets the current draw color. ```{note} Red is the default value. ``` ----- TImage.GetDrawAlpha ------------------- ``` function TImage.GetDrawAlpha: Byte; ``` Returns the current draw alpha. 0 is completely transparent and 255 is completely opauge. ```{note} 255 is the default value. ``` ----- TImage.SetDrawAlpha ------------------- ``` procedure TImage.SetDrawAlpha(Value: Byte); ``` Sets the current draw color. This determines how transparent something is drawn. ```{note} 255 is the default value. ``` ----- TImage.GetFontName ------------------ ``` function TImage.GetFontName: String; ``` ----- TImage.SetFontName ------------------ ``` procedure TImage.SetFontName(Value: String); ``` ----- TImage.GetFontSize ------------------ ``` function TImage.GetFontSize: Single; ``` ----- TImage.SetFontSize ------------------ ``` procedure TImage.SetFontSize(Value: Single); ``` ----- TImage.GetFontAntialiasing -------------------------- ``` function TImage.GetFontAntialiasing: Boolean; ``` ----- TImage.SetFontAntialiasing -------------------------- ``` procedure TImage.SetFontAntialiasing(Value: Boolean); ``` ----- TImage.GetFontBold ------------------ ``` function TImage.GetFontBold: Boolean; ``` ----- TImage.SetFontBold ------------------ ``` procedure TImage.SetFontBold(Value: Boolean); ``` ----- TImage.GetFontItalic -------------------- ``` function TImage.GetFontItalic: Boolean; ``` ----- TImage.SetFontItalic -------------------- ``` procedure TImage.SetFontItalic(Value: Boolean); ``` ----- TImage.GetAlpha --------------- ``` function TImage.GetAlpha(X, Y: Integer): Byte; ``` ----- TImage.SetAlpha --------------- ``` procedure TImage.SetAlpha(X, Y: Integer; Alpha: Byte); ``` ----- TImage.GetPixel --------------- ``` function TImage.GetPixel(X, Y: Integer): TColor; ``` ----- TImage.SetPixel --------------- ``` procedure TImage.SetPixel(X, Y: Integer; Color: TColor); ``` ----- TImage.GetPixels ---------------- ``` function TImage.GetPixels(Points: TPointArray): TColorArray; ``` ----- TImage.SetPixels ---------------- ``` procedure TImage.SetPixels(Points: TPointArray; Color: TColor); ``` ----- TImage.SetPixels ---------------- ``` procedure TImage.SetPixels(Points: TPointArray; Colors: TColorArray); ``` ----- TImage.InImage -------------- ``` function TImage.InImage(X, Y: Integer): Boolean; ``` ----- TImage.SetSize -------------- ``` procedure TImage.SetSize(AWidth, AHeight: Integer); ``` ----- TImage.SetExternalData ---------------------- ``` procedure TImage.SetExternalData(NewData: PColorBGRA; DataWidth, DataHeight: Integer); ``` Point the image data to external data (ie. not data allocated by the image itself). ----- TImage.ResetExternalData ------------------------ ``` procedure TImage.ResetExternalData; ``` Remove the effects of `SetExternalData`. ----- TImage.Fill ----------- ``` procedure TImage.Fill(Color: TColor); ``` Fill the entire image with a color. ----- TImage.FillWithAlpha -------------------- ``` procedure TImage.FillWithAlpha(Value: Byte); ``` Set the entire images alpha value. ----- TImage.Clear ------------ ``` procedure TImage.Clear; ``` Fills the entire image with the default pixel. ----- TImage.Clear ------------ ``` procedure TImage.Clear(Area: TBox); ``` Fills the given area with the default pixel. ----- TImage.ClearInverted -------------------- ``` procedure TImage.ClearInverted(Area: TBox); ``` Fills everything but given area with the default pixel. ----- TImage.Copy ----------- ``` function TImage.Copy(Box: TBox): TImage; ``` ----- TImage.Copy ----------- ``` function TImage.Copy: TImage; ``` ----- TImage.Crop ----------- ``` procedure TImage.Crop(Box: TBox); ``` ----- TImage.Pad ---------- ``` procedure TImage.Pad(Amount: Integer); ``` Pad an `Amount` pixel border around the entire image. ----- TImage.Offset ------------- ``` procedure TImage.Offset(X,Y: Integer); ``` Offset the entire images content within itself. ----- TImage.isBinary --------------- ``` function TImage.isBinary: Boolean; ``` Binary in this context means the entire image is either filled with $000000 (black) or $FFFFFF (white) excluding Alpha. ----- TImage.SplitChannels -------------------- ``` procedure TImage.SplitChannels(var B,G,R: TByteArray); ``` ----- TImage.FromChannels -------------------- ``` procedure TImage.FromChannels(const B,G,R: TByteArray; W, H: Integer); ``` ----- TImage.GetColors ---------------- ``` function TImage.GetColors: TColorArray; ``` ----- TImage.GetColors ---------------- ``` function TImage.GetColors(Box: TBox): TColorArray; ``` ----- TImage.ReplaceColor ------------------- ``` procedure TImage.ReplaceColor(OldColor, NewColor: TColor; Tolerance: Single); ``` ----- TImage.ReplaceColorBinary ------------------------- ``` procedure TImage.ReplaceColorBinary(Color: TColor; Tolerance: Single = 0); ``` ----- TImage.ReplaceColorBinary ------------------------- ``` procedure TImage.ReplaceColorBinary(Colors: TColorArray; Tolerance: Single = 0); ``` ----- TImage.Resize ------------- ``` function TImage.Resize(Algo: EImageResizeAlgo; NewWidth, NewHeight: Integer): TSimbaImage; ``` ----- TImage.Resize ------------- ``` function TImage.Resize(Algo: EImageResizeAlgo; Scale: Single): TSimbaImage; ``` ----- TImage.Rotate ------------- ``` function TImage.Rotate(Algo: EImageRotateAlgo; Radians: Single; Expand: Boolean): TSimbaImage; ``` ----- TImage.Downsample ----------------- ``` function TImage.Downsample(Scale: Integer): TImage; ``` ----- TImage.Downsample ----------------- ``` function TImage.Downsample(Scale: Integer; IgnorePoints: TPointArray): TImage; ``` Downsample but points in `IgnorePoints` are not sampled from. ----- TImage.Mirror ------------- ``` function TImage.Mirror(Style: EImageMirrorStyle): TImage; ``` ----- TImage.TextWidth ---------------- ``` function TImage.TextWidth(Text: String): Integer; ``` ----- TImage.TextHeight ----------------- ``` function TImage.TextHeight(Text: String): Integer; ``` ----- TImage.TextSize --------------- ``` function TImage.TextSize(Text: String): TPoint; ``` ----- TImage.DrawText --------------- ``` procedure TImage.DrawText(Text: String; Position: TPoint; Color: TColor); ``` ----- TImage.DrawText --------------- ``` procedure TImage.DrawText(Text: String; Box: TBox; Alignments: EImageTextAlign; Color: TColor); ``` ----- TImage.DrawTextLines -------------------- ``` procedure TImage.DrawTextLines(Text: TStringArray; Position: TPoint; Color: TColor); ``` ----- TImage.DrawImage ---------------- ``` procedure TImage.DrawImage(Image: TImage; Position: TPoint); ``` ----- TImage.DrawATPA --------------- ``` procedure TImage.DrawATPA(ATPA: T2DPointArray); ``` Draws every TPA in the ATPA. ----- TImage.DrawTPA -------------- ``` procedure TImage.DrawTPA(Points: TPointArray); ``` Draws a TPointArray. ----- TImage.DrawLine --------------- ``` procedure TImage.DrawLine(Start, Stop: TPoint); ``` ----- TImage.DrawLineGap ------------------ ``` procedure TImage.DrawLineGap(Start, Stop: TPoint; GapSize: Integer); ``` ----- TImage.DrawCrosshairs --------------------- ``` procedure TImage.DrawCrosshairs(ACenter: TPoint; Size: Integer); ``` ----- TImage.DrawCross ---------------- ``` procedure TImage.DrawCross(ACenter: TPoint; Radius: Integer); ``` ----- TImage.DrawBox -------------- ``` procedure TImage.DrawBox(B: TBox); ``` ----- TImage.DrawBoxFilled -------------------- ``` procedure TImage.DrawBoxFilled(B: TBox); ``` ----- TImage.DrawBoxInverted ---------------------- ``` procedure TImage.DrawBoxInverted(B: TBox); ``` ----- TImage.DrawPolygon ------------------ ``` procedure TImage.DrawPolygon(Points: TPolygon); ``` ----- TImage.DrawPolygonFilled ------------------------ ``` procedure TImage.DrawPolygonFilled(Points: TPolygon); ``` ----- TImage.DrawPolygonInverted -------------------------- ``` procedure TImage.DrawPolygonInverted(Points: TPolygon); ``` ----- TImage.DrawQuad --------------- ``` procedure TImage.DrawQuad(B: TBox); ``` ----- TImage.DrawQuadFilled --------------------- ``` procedure TImage.DrawQuadFilled(B: TBox); ``` ----- TImage.DrawQuadInverted ----------------------- ``` procedure TImage.DrawQuadInverted(B: TBox); ``` ----- TImage.DrawCircle ----------------- ``` procedure TImage.DrawCircle(Center: TPoint; Radius: Integer); procedure TImage.DrawCircle(Circle: TCircle); ``` ----- TImage.DrawCircleFilled ----------------------- ``` procedure TImage.DrawCircleFilled(Center: TPoint; Radius: Integer); procedure TImage.DrawCircleFilled(Circle: TCircle); ``` ----- TImage.DrawCircleInverted ------------------------- ``` procedure TImage.DrawCircleInverted(Center: TPoint; Radius: Integer); procedure TImage.DrawCircleInverted(Circle: TCircle); ``` ----- TImage.DrawLineAA ----------------- ``` procedure TImage.DrawLineAA(Start, Stop: TPoint; Color: TColor; Thickness: Single = 1.5); ``` ----- TImage.DrawEllipseAA -------------------- ``` procedure TImage.DrawEllipseAA(ACenter: TPoint; XRadius, YRadius: Integer; Color: TColor; Thickness: Single = 1.5); ``` ----- TImage.DrawCircleAA -------------------- ``` procedure TImage.DrawCircleAA(ACenter: TPoint; Radius: Integer; Color: TColor; Thickness: Single = 1.5); procedure TImage.DrawCircleAA(Circle: TCircle; Color: TColor; Thickness: Single = 1.5); ``` ----- TImage.DrawQuadArray -------------------- ``` procedure TImage.DrawQuadArray(Quads: TQuadArray; Filled: Boolean); ``` ----- TImage.DrawBoxArray ------------------- ``` procedure TImage.DrawBoxArray(Boxes: TBoxArray; Filled: Boolean); ``` ----- TImage.DrawPolygonArray ----------------------- ``` procedure TImage.DrawPolygonArray(Polygons: TPolygonArray; Filled: Boolean); ``` ----- TImage.DrawCircleArray ---------------------- ``` procedure TImage.DrawCircleArray(Centers: TPointArray; Radius: Integer; Filled: Boolean); ``` ----- TImage.DrawCrossArray --------------------- ``` procedure TImage.DrawCrossArray(Points: TPointArray; Radius: Integer); ``` ----- TImage.DrawHSLCircle -------------------- ``` procedure TImage.DrawHSLCircle(ACenter: TPoint; Radius: Integer); ``` ----- TImage.Sobel ------------ ``` function TImage.Sobel: TImage; ``` Applies a sobel overator on the image, and returns it. ----- TImage.Enhance -------------- ``` function TImage.Enhance(Enchantment: Byte; C: Single): TImage; ``` Enhances colors in the image by a given value. - `Enhancement`: How much to substraact or add to the color. - `C`: Based on the "mid"-value (127) if color is below then it gets weakened else enchanced. ----- TImage.GreyScale ---------------- ``` function TImage.GreyScale: TImage; ``` ----- TImage.Brightness ----------------- ``` function TImage.Brightness(Value: Integer): TImage; ``` ----- TImage.Invert ------------- ``` function TImage.Invert: TImage; ``` ----- TImage.Posterize ---------------- ``` function TImage.Posterize(Value: Integer): TImage; ``` ----- TImage.Convolute ---------------- ``` function TImage.Convolute(Matrix: TDoubleMatrix): TImage; ``` Returns a full convolution with the given mask (Srouce?mask). ```{hint} Mask should not be very large, as that would be really slow to proccess. ``` ----- TImage.Threshold ---------------- ``` function TImage.Threshold(Invert: Boolean = False; C: Integer = 0): TImage; ``` Otsu threshold algorithm. Invert = Invert output C = Constant value to add to computed threshold ----- TImage.ThresholdAdaptive ----------'------------- ``` function TImage.ThresholdAdaptive(Invert: Boolean = False; Radius: Integer = 25; C: Integer = 0): TImage; ``` Adapative thresholding using local average. Invert = Invert output Radius = Window size, must be odd (default = 25) C = Constant value to add to computed threshold ----- TImage.ThresholdAdaptiveSauvola ------------------------------- ``` function TImage.ThresholdAdaptiveSauvola(Invert: Boolean = False; Radius: Integer = 25; C: Single = 0.2): TImage; ``` Sauvola binarization algorithm. Invert = Invert output Radius = Window size, must be odd (default = 25) C = Constant value (default = 0.2). Typical values are between 0.2 and 0.5. ----- TImage.Blend ------------ ``` function TImage.Blend(Points: TPointArray; Size: Integer): TImage; ``` ----- TImage.Blend ------------ ``` function TImage.Blend(Points: TPointArray; Size: Integer; IgnorePoints: TPointArray): TImage; ``` Blend but points in `IgnorePoints` are not sampled from. ----- TImage.Blur ----------- ``` function TImage.Blur(Algo: EImageBlurAlgo; Radius: Integer): TSimbaImage; ``` Algo can be either EImageBlurAlgo.BOX, EImageBlurAlgo.GAUSS. ```{note} EImageBlurAlgo.GAUSS is not true gaussian blur it's an approximation (in linear time). ``` ----- TImage.ToGreyMatrix ------------------- ``` function TImage.ToGreyMatrix: TByteMatrix; ``` ----- TImage.ToMatrix --------------- ``` function TImage.ToMatrix: TIntegerMatrix; ``` ----- TImage.ToMatrix --------------- ``` function TImage.ToMatrix(Box: TBox): TIntegerMatrix; ``` ----- TImage.FromMatrix ----------------- ``` procedure TImage.FromMatrix(Matrix: TIntegerMatrix); ``` Resizes the image to the matrix dimensions and draws the matrix. ----- TImage.FromMatrix ----------------- ``` procedure TImage.FromMatrix(Matrix: TSingleMatrix; ColorMapType: Integer = 0); ``` Resizes the image to the matrix dimensions and draws the matrix. ColorMapType can be: 0: cold blue to red 1: black -> blue -> red 2: white -> blue -> red 3: light (to white) 4: light (to black) ----- TImage.FromString ----------------- ``` procedure TImage.FromString(Str: String); ``` ----- TImage.FromData --------------- ``` procedure TImage.FromData(AWidth, AHeight: Integer; Memory: PColorBGRA; DataWidth: Integer); ``` ----- TImage.Load ----------- ``` procedure TImage.Load(FileName: String); ``` ----- TImage.Load ----------- ``` procedure TImage.Load(FileName: String; Area: TBox); ``` ----- TImage.Save ----------- ``` function TImage.Save(FileName: String; OverwriteIfExists: Boolean = False): Boolean; ``` ----- TImage.SaveToString ------------------- ``` function TImage.SaveToString: String; ``` ----- TImage.Equals ------------- ``` function TImage.Equals(Other: TImage): Boolean; ``` Are the two images exactly equal? ```{note} Alpha is not taken into account. ``` ----- TImage.Compare -------------- ``` function TImage.Compare(Other: TImage): Single; ``` ----- TImage.PixelDifference ---------------------- ``` function TImage.PixelDifference(Other: TImage; Tolerance: Single = 0): Integer; ``` ----- TImage.PixelDifferenceTPA ------------------------- ``` function TImage.PixelDifferenceTPA(Other: TImage; Tolerance: Single = 0): TPointArray; ``` ----- TImage.ToLazBitmap ------------------ ``` function TImage.ToLazBitmap: TLazBitmap; ``` ----- TImage.FromLazBitmap -------------------- ``` procedure TImage.FromLazBitmap(LazBitmap: TLazBitmap); ``` ----- TImage.LoadFonts ---------------- ``` function TImage.LoadFonts(Dir: String): Boolean; static; ``` Loads all ".ttf" fonts in the given directory. ----- TImage.Fonts ------------ ``` function TImage.Fonts: TStringArray; static; ``` Returns all the loaded font names. ----- TImage.FindColor ---------------- ``` function TImage.FindColor(Color: TColor; Tolerance: Single = 0): TPointArray; ``` Returns all the loaded font names. ----- TImage.FindImage ---------------- ``` function TImage.FindImage(Image: TImage; Tolerance: Single = 0): TPoint; ``` Returns all the loaded font names. ----- TImage.GetLoadedImages ---------------------- ``` function GetLoadedImages: TImageArray; ``` Returns an array of all the loaded images. ----- TImage.CreateFromTarget ----------------------- ``` function TImage.CreateFromTarget(Target: TSimbaTarget; Bounds: TBox = [-1,-1,-1,-1]): TImage; static; ``` Creates an image from the given target and bounds. - The `Bounds` parameter defaults to the entire target. ----- TImage.CreateFromTarget ----------------------- ``` function TImage.CreateFromTarget(Bounds: TBox = [-1,-1,-1,-1]): TImage; static; ``` Creates an image from the bounds of the current target. - Current target is the global **Target** variable - The `Bounds` parameter defaults to the entire target. ----- TImage.DrawTarget ----------------- ``` procedure TImage.DrawTarget(Target: TSimbaTarget; P: TPoint; Bounds: TBox = [-1,-1,-1,-1]); ``` ----- TImage.DrawTarget ----------------- ``` procedure TImage.DrawTarget(P: TPoint; Bounds: TBox = [-1,-1,-1,-1]); overload; ``` ----- TImage.Show ----------- ``` procedure TImage.Show(EnsureVisible: Boolean = True); ``` Show a image on the debug image. ----- TImage.Target ------------- ``` property TImage.Target: TTarget; ``` Returns a target which is targetted to the image.