Active Image v5.0 Documentation Methods: CopyImage , CopyImageResize, CopyImageRotate*, CopyImageSimpleRotate*, CopyImageMerge*, CreateImage, ConvertToGray*, ConvertToMonochromeAuto*, ConvertToPalette*, ConvertToPaletteNoAlpha*, CreateImagePalette*, DestroyAll, DestroyImage, DrawArc, DrawEllipse, DrawFilledArc, DrawFilledEllipse, DrawFilledPolygon, DrawFilledRectangle, DrawLine, DrawPolygon, DrawRectangle, DrawText, DrawTextAngle, Fill, DrawTextTTF*, DrawTextAngleTTF*, Fill, GetColorBlue, GetColorGreen, GetColorRed, GetColorAlpha*, GetColorTotal*, GetPixelAlpha*, GetTrueColor*, GetFont, GetHeight, GetImage, GetImageType, GetInterlace, GetJpegQuality, GetLineThickness, GetPixelBlue, GetPixelGreen, GetPixelRed, GetTextTTFRectangle, GetTransparent, GetWidth, ReadFromDatabase, ReadFromFile, ReadFromVariable, SetColor, SetFont, SetFontTTF, SetImage, SetImageType, SetJpegQuality, SetLineThickness, SetAlphaColor*, SetAlphaBlending*, SetColorByIndex*, SetFontPathTTF*, SetFontPathTTFAuto*, SetFontSizeTTF*, SetSaveAlpha*, SetPixel, SetTextAntialias, SetTransparent, WriteToDatabase, WriteToFile, WriteToVariable, WriteToVariableVariant* * - new methods in v4.2, v4.5, v4.7, v4.8 and v4.9 Introduction General information Component is distributed with complete source code that can be easily extended with your own functionality. Another advantage is that you can host the component on the servers where system security policy allows running only open source components. Working with the component Let us take a close look at the component internals on a simple sample.
| Image Creation. Used method: CreateImage (width, height) CreateImage allocates memory and creates black image with specified image dimensions (width and height) in a special internal format. You need to select image type every time you need to import/export image to/from the component e.g. saving image to file, database or data stream. Image format. Used method: SetImageType (style) Image format can be set with SetImageType method. Type 0 sets PNG format (default), type 1- Jpeg. You need also to define the type when reading image from database or variable. Text Output. Used method: SetFont (num), and TrueType font - SetFontPathTTFAuto, SetFontTTF, DrawTextTTF Component has a number of predefined font styles: 0 - Small (default) , 1 - MediumBold , 2- Large, 3 - Tiny, 4 - Giant
    ' Define object variable
    Dim im
    ' Create object
    Set im = CreateObject("ActiveImage.Images.1")
    ' Create image with specified width and height
    im.CreateImage 150,75
    im.SetSaveAlpha 0
    ' Set foreground color in RGB format (white)
    im.SetColor 191,255,255
    ' Fill from the current point with foreground color
    im.Fill 0,0
    ' Set foreground color in RGB format (black)
    im.SetColor 0,0,0
    ' Set font number to 0 (Small)
    im.SetFont 0
    ' Draw text and the number of active font
    im.DrawText 10,10, "Small - (default) " & im.GetFont
    im.SetFont 1
    im.DrawText 10,20, "Medium Bold - " & im.GetFont
    im.SetFont 2
    im.DrawText 10,30, "Large - " & im.GetFont
    im.SetFont 3
    im.DrawText 10,44, "Tiny - " & im.GetFont
    im.SetFont 4
    im.DrawText 10,50, "Giant - " & im.GetFont

    'TrueType font
    im.SetPathFontTTFAuto
    im.SetFontSize 14
    im.SetFontTTF "verdanab"
    im.DrawTextTTF 10,60, "TrueType"

    ' Save Image to file. Default type 0 corresponds to PNG format.
    im.WriteToFile "C:\AI\font.png"

    ' Set Jpeg format
    im.SetImageType 1
    ' Set Jpeg quality
    im.SetJpegQuality 100

    im.WriteToFile "C:\AI\font.jpg"

    ' Delete image and free memory
    im.DestroyImage

    ' Clear the variable
    Set im = Nothing
Picture 1.
Line. Used method: SetLineThickness (num). Line thickness (in number of pixels) is applied for DrawLine, DrawArc and DrawPolygon methods. Default value is 1 Polygon. Used method: DrawPolygon (array a, integer point_num) This sample draws polygons. You need to define coordinates array and consequently fill it with x,y pairs. For example coord(0) = x1, coord(1) = y1, etc. In a call to DrawPolygon you have to specify the array and the number of points (or x, y pairs) to draw.
Methods
ConvertToGray () – Converts image to GrayScale.
ConvertToMonochromeAuto () – Converts TrueColor image to black and white. This method can be used to create WBMP images. See "Graphics for WAP" sample.
ConvertToPalette () – Converts TrueColor image to palletized one. This method can be used to create transparent PNG images. See creating transparent images sample.
ConvertToPaletteNoalpha () – Converts TrueColor image to palletized one without alpha channel (most accurate color conversion despite decreasing color depth from 4294967296 to 256 colors).
CopyImage (srcnum, destnum, destX, destY, srcX, srcY, width, height) - Copy image part srcnum – Image handle (number) to copy from [0 - 10] destnum – Image handle (number) to copy to [0 - 10] (destX, destY)– coordinate to place a part of source image from (srcX, srcY) with specified width and height width – integer. Image width height – integer. Image height
CopyImageMerge (srcnum, destnum, destX, destY, srcX, srcY, width, height) - Copy image part with merge srcnum – Image handle (number) to copy from [0 - 10] destnum – Image handle (number) to copy to [0 - 10] (destX, destY)– coordinate to place a part of source image from (srcX, srcY) with specified width and height width – integer. Image width height – integer. Image height
CopyImageResize(destnum,srcnum,destX,destY,scrX,srcY, destWidth, destHeight, srcWitdh,srcHeight) - Copy image part with resize s rcnum – Image handle (number) to copy from [0 - 10] d estnum – Image handle (number) to copy to [0 - 10] (destX, destY)– coordinate of destination image to place a part of source image beginning in (srcX, srcY) with specified srcWidth and srcHeight destWidth, destHeight– width and height of destination image. Image is resized if srcWidth != destWidth or srcHeight != destHeight
CopyImageRotate(destnum,srcnum,angle) - Rotate source image and copy to a new image. The new image will be created automatically. The color of background can be set with SetColor method. New image dimensions will be changed to accommodate rotated image. srcnum - Image handle (number) to copy from [0 - 10] destnum - Image handle (number) to copy to [0 - 10] angle - angle to rotate image
CopyImageSimpleRotate(destnum,srcnum,dstX,dstY,scrX,srcY, Witdh,Height) - Rotate source image and copy to a new image. The new image should exist. This method uses different algorithm to rotate images. s rcnum - Image handle (number) to copy from [0 - 10] d estnum - Image handle (number) to copy to [0 - 10] (destX, destY) - coordinates of center of the rotated copy (srcX, srcY) - coordinates of upper left corner of the source image. angle - angle to rotate image
CreateImage (width, height) - Allocate memory and create image in internal format width – integer. Image width height – integer. Image height
CreateImagePalette (width, height) – Creates palette (256 color table) width – integer. Image width height – integer. Image height
DestroyAll - Destroy images and free allocated memory .
DestroyImage - Destroy active image that was specified in a call to SetImage and clean up the memory. By default the image with 0 handle is destroyed. Returns True is a image destroyed succsesfully
DrawArc(cx,cy, w, h,s,e) - Draw Arc cx,cy – arc center coordinate w,h – arc width and height s,e – start and end angles [0 – 360]
| Sample
        Dim im
        Set im = CreateObject("ActiveImage.Images.1")
        im.CreateImage 150,150
        im.SetColor 255,255,255
        im.Fill 0,0
        im.SetColor 0,0,0
        im.DrawArc 100,100,120,100,180,270
        im.SetFont 3
        im.DrawText 10,10, "cx=100, cy=100 "
        im.DrawText 10,20, "w=120, h=100"
        im.DrawText 10,30, "s=180, e=270"

        im.WriteToFile "C:\arc.png"
        im.SetImageType 1
        im.SetJpegQuality 100
        im.WriteToFile "C:\arc.jpg"
        im.DestroyImage
        Set im = Nothing
| Picture 2.
DrawEllipse(cx,cy, w, h, s, e) - Draw Ellipse cx,cy – ellipse center coordinate w,h –ellipse width and height s,e – start and end angles [0 – 360]
DrawFilledArc(cx,cy, w, h,s,e) - Draw filled arc (can be used to create pie charts) cx,cy – arc center coordinate w,h – arc width and height s,e – start and end angle [0 – 360]
DrawFilledEllipse(cx,cy, w, h,s,e) - Draw filled ellipse (can be used to create charts) cx,cy – ellipse center w,h – ellipse height and width s,e – start and end angles [0 – 360]
DrawFilledPolygon(coords, num) - Draw filled polygon coords – one dimension array that specifies all coordinate pairs. First value (X1) should be placed in the array element with zero index num – Number of points (x,y pairs). This value shouldn't be greater than 1998.
> | Sample
>      Dim im
>      Dim coords(100)

>      Set im =  CreateObject("ActiveImage.Images.1")
>      im.CreateImage 100,100
>      im.SetColor 255,255,255
>      im.Fill 0,0
>      im.SetColor 255,0,0
>      coords(0) = 10
>      coords(1) = 10
>      coords(2) = 80
>      coords(3) = 10
>      coords(4) = 45
>      coords(5) = 55
>      im.DrawFilledPolygon coords, 6
>      im.WriteToFile "C:\AI\three.png"
>      im.SetImageType 1
>      im.SetJpegQuality 100
>      im.WriteToFile "C:\AI\three.jpg"
>      im.DestroyImage
>      Set im = Nothing
| Picture 3.
DrawFilledRectangle(x1,y1,x2,y2) - Draw filled rectangle x1,y1,x2,y2 – coordinates of upper left and lower right rectangle corners. DrawFilledRectangle draws with active foreground color and you should use SetColor method if you want to change it.
DrawLine(x1,y1,x2,y2) - Draw line x1,y1,x2,y2 - coordinates of the end and start line points. Line thickness can be set using SetLineThickness method. DrawLine draws with active foreground color and you may change it calling SetColor method.
DrawPolygon(coords, num) - Draw polygon coords – one dimension array that specifies all coordinate pairs. First value (X1) should be placed in the array element with zero index num – Number of points (x,y pairs). The value shouldn't be greater than 1998 [0..1998].
DrawRectangle(x1,y1,x2,y2) - Draw rectangle x1,y1,x2,y2 – coordinates of upper left and lower right rectangle corners. DrawRectangle draws with active foreground color and you should use SetColor method if you want to change it. Line thickness can be set in a call to SetLineThickness method.
DrawText(x,y,text) - Draw text x,y – define start point for text output. text – text string to draw
DrawTextAngle(x, y, angle, text) - Draw text with angle x,y – define start point for text output.. angle – text slope [0..360] text – text string to draw
DrawTextAngleTTF (x,y,angle,text)– Draw text with selected angle and TrueType font. x,y – define start point for text output.. angle – text slope [0..360] text – text string to draw
DrawTextTTF(x,y,text)– Draw text with selected TrueType font x,y – define start point for text output.. text – text string to draw
Fill(x,y) - Color fill (changing color on another) Fill method replaces all points of the same color adjacent to start point (x,y) on active foreground color. x,y – fill start point You can change the color with SetColor. This method may be useful to change black background after image creation.
GetColorAlpha – Get alpha channel value of active foreground color
GetColorBlue - Get blue value of active foreground color
GetColorGreen - Get green value of active foreground color
GetColorTotal – Return total number of colors used. Works only for palletized images.
GetColorRed - Get red value of active foreground color
GetFont - Get font style for text output operations Returns active font style for text output operations 0 - Small 1- MediumBold 2 - Large 3 - Tiny 4 - Giant
> | Sample
>      ' Define object variable
>      Dim im

>      ' Create object
>      Set im = CreateObject("ActiveImage.Images.1")

>      ' Create image with specified width and height
>      im.CreateImage 150,75

>      ' Set foreground color in RGB format (white)
>      im.SetColor 255,255,255

>      ' Fill from the current point with foreground color
>      im.Fill 0,0

>      ' Set foreground color in RGB format (black)
>      im.SetColor 0,0,0

>      ' Set font number to 0 (Small)
>      im.SetFont 0

>      ' Draw text and the number of active font
>      im.DrawText 10,10, "Small - (default) " &im.GetFont

>      im.SetFont 1
>      im.DrawText 10,20, "Medium Bold - " & im.GetFont
>      im.SetFont 2
>      im.DrawText 10,30, "Large - " & im.GetFont
>      im.SetFont 3
>      im.DrawText 10,44, "Tiny - " & im.GetFont
>      im.SetFont 4
>      im.DrawText 10,50, "Giant - " & im.GetFont

>      ' Save Image to file. Default type 0 corresponds to PNG format.
>      im.WriteToFile "C:\AI\font.png"

>      ' Set Jpeg format
>      im.SetImageType 1

>      ' Set Jpeg quality
>      im.SetJpegQuality 100

>      im.WriteToFile "C:\AI\font.jpg"

>      ' Delete image and free memory
>      im.DestroyImage

>      ' Clear the variable
>      Set im = Nothing
| Picture 3.
GetHeight - Get image height Returns image height For example you may determine image height after image read operation and resize the image if necessary.
GetImage - Get image handle Returns the number of active image. [0..10]. You can set active image in a call to SetImage.
GetImageType - Get image format (PNG, Jpeg) Returns active image format (0 – PNG , 1 – Jpeg). You can set image format with SetImageType. Image format is used only for import/export operations.
GetInterlace - returns true if image is interlaced
GetJpegQuality - Get Jpeg quality value Return default value or the value set with SetJpegQuality. You can set necessary Jpeg quality if you save the image in Jpeg format to variable, database or file in a call to SetJpegQuality.
GetLineThickness - Get current line thickness (used in DrawLine, etc)
GetPixelAlpha (x,y)– Gets the value of alpha channel component of the color
GetPixelBlue(x,y) - Get blue value for a pixel Returns blue component of a pixel at (x,y) coordinate. B (RGB) [0..255]
GetPixelGreen(x,y) - Get green value for a pixel Returns green component of a pixel at (x,y) coordinate. G (RGB) [0..255]
GetPixelRed(x,y) - Get red value for a pixel Returns red component of a pixel at (x,y) coordinate. R (RGB) [0..255]
GetTextTTFRectangle - Get text string dimensions Returns variant array [1,4]
GetTransparent - Returns true if image is transparent
GetTrueColor (filename) – Returns true if image is in TrueColor
GetWidth - Get image width Returns image width For example you may determine image height after image read operation and resize the image if necessary.
ReadFromDatabase (AdoRecordset)- Read image from database Use ADO for database access. Methods DAO (for MS Access) are not supported yet. You need to have open recordset with cursor 2 (adOpenDynamic) and blocking type 3 (adLockOptimistic).
ReadFromFile(namefile) - Read image from file namefile – file name (can include file path) For example, ReadFromFile “C:\test.png” By default, ReadFromFile reads image in PNG format. If you want to read Jpeg image, you need to call SetImageType 1 before calling ReadFromFile. ( 0 – PNG, 1 – Jpeg)
ReadFromVariable(var) - Read image from variable var – variable of Variant type. You can save image in variable using WriteToVariable. By default ReadFromVariable reads image in PNG format. If you want to read Jpeg image, you need to call SetImageType 1 before calling ReadFromVariable. ( 0 – PNG, 1 – Jpeg)
> | Sample Shows how to read image from calling program variable. You can upload the image from the client side in the same way, process it memory and save back without the creation of any temporary files.
>         <%   ‘up.asp
>         Dim a, fs, pth, fname, BinArray, im
>         fname = "copyrose.jpg"
>         pth = Server.MapPath(".") & "\"
>         Set fs = CreateObject("Scripting.FileSystemObject")
>         Set a = fs.OpenTextFile(pth & fname, 1, 0)
>         Do while not a.AtEndOfStream
>         BinArray = BinArray & chrB(asc(a.Read(1)))
>         Loop
>         a.Close

>         Set im = CreateObject("ActiveImage.Images.1")
>         im.SetImageType 1
>         im.ReadFromVariable (BinArray)
>         response.write "<br>"
>         response.write "height = " & im.GetHeight
>         response.write "<br>"
>         response.write "width = " & im.GetWidth
>         im.DestroyImage
>         Set im = Nothing
>         %>
SetAlphaBlending (newval) – - Enables/Disables alpha blending. Value 1 turns alpha blending mode on when each next element of the image will be drawn with a value of transparency. See Alpha Blending Sample.
SetAlphaColor (r,g,b,a) – New method to set color with alpha channel. For palletized image any non-zero value will result in setting this color as transparent. For example if you draw a filled rectangle with alpha value set to 1 on a palletized image, you will get transparent box. See image transparency sample. integer r [0..255] - set red component integer g [0..255] - set green component integer b [0..255] - set blue component integer a [0..127] - set alpha channel component. 0 - image is opaque. 127 - image is fully transparent. 64 - image is half tranparent.
SetColor(R,G,B) - Set foreground color R - red image component [0..255] G - green image component [0..255] B - blue image component [0..255] Different drawing operations (like DrawText, DrawRectangle, DrawLine, Fill etc) will be made with this active foreground color. Sample colors: 255,255,255 – white color 0,0,0 – black color 255,0,0 – red color 0,0,255 – blue color 127,127,127 – grey color
SetColorByIndex (n) – Set color from already created color table (palette). n - color number/index in the color table.
SetFont (num) - Select current font Set active font style 0 - Small (default) 1- MediumBold 2 - Large 3- Tiny 4 - Giant For more information you may check out the GetFont sample.
SetFontPathTTF (str) – Set path to the TrueType font directory.
SetFontPathTTFAuto – Set path to TrueType font automatically. For example if Windows NT/2000 has been installed to C:\winnt, then the path is C:\Winnt\Fonts
SetFontSizeTTF (size) – Set true type font size
SetFontTTF (str) – Set true type font name. For example, "verdana".
SetImage (num) - Select active image Set active image. All image operations will be in progress with the selected image [0..10]
SetImageType (num) - Set image format (PNG, Jpeg) Set image format for export/import operations (reading/writing file, database, variable) num : 0 - PNG (default), 1 - Jpeg If you try to read Jpeg using PNG format converter, error exception "No Image!" will be thrown. If you want to handle errors in VBScript you need to run “On Error Resume Next” command before calling SetImageType method
SetJpegQuality (quality) - Set Jpeg quality value integer quality [0..100] You can set necessary Jpeg quality if you save the image in Jpeg format to variable, database or file.
SetLineThickness (width)- Set line thickness for simple draw operations Positive integer width (positive), default = 1 Sets line thickness in pixels for common draw methods (DrawLine, DrawPolygon, DrawArc, etc) .
SetPixel (x,y) -Set pixel Draw a pixel in (x,y) coordinate with active foreground color.
SetSaveAlpha (newval) – Enable/Disable saving alpha channel color information. See SaveAlpha Sample Value 1 sets the mode when alpha channel information will be saved in image
SetTextAntialias (num) - Sets text antialiasing for palette images Num: 1 – turn on text antialiasing 0 – turn off text antialiasing
SetTransparent (num) - Set current color as transparent Num: 1 – turn on image transparency 0 – turn off image transparency
WriteToDatabase (AdoRecordset) - Write image to database Use ADO for database access. Methods DAO (for MS Access) are not supported yet. You need to have open recordset with cursor 2 (adOpenDynamic) and blocking type 3 (adLockOptimistic).
WriteToFile (namefile) – Write image to file You need to specify image type (call SetImageType) if you want to change image format
WriteToVariable (var) –Write image to variable (can be also used to write image directly to browser data stream) var –variable has VARIANT type. You may also need to specify image format in a call to SetImageType (num)
WriteToVariableVariant (var) –Write image to variable (can be also used to write image to OleLoadPicture in VC++) var –variable has VARIANT type. You may also need to specify image format in a call to SetImageType (num)
Error handling If you want to catch errors returned from the component, you have to enable it in ASP/VBScript code, adding “On Error Resume Next”. The component throws the following exceptions: No image. It may happen when (a) you draw on the NULL image object. Check if you called CreateImage before calling draw methods(b) When you save empty image to file/database/variable (c) You deleted image with DestroyImage or tried to call SetImage with wrong image number (d) You try to load the image of wrong format or set incorrect format in a call to SetImageType. Invalid parameter. The passed parameters may have wrong type, incorrect value (blue color component is greater than 255 or negative color for example) Also this error may be thrown when you try to create image larger than (5000x5000 pixels) or specify more than 4998 polygon vertexes. No font. The path to TrueType directory is invalid. You can try to use SetFontPathTTFAuto method instead of SetFontPathTTF. Also font name can be invalid for your system. For example if you call SetFontTTF verdana.ttf - you need to give font name, instead of file name with extensions