The Ik9Effect.dll, Ik9EffectA.dll, Ik9Effect64.dll, and Ik9Effect64A.dll provides functions for applying imaging effects
The Ik9Effect.dll corresponds to the 32 bit Unicode version.
The Ik9EffectA.dll corresponds to the 32 bit ANSI version.
The Ik9Effect64.dll corresponds to the 64 bit Unicode version.
The Ik9Effect64A.dll corresponds to the 64 bit ANSI version.
The discussion below will use "Ik9Effect.dll" to refer to all 4 of these version dlls unless specifically noted.
Regarding RGB and YCrCb color space: The conversion between the RGB and YCrCb color space is performed internally by the IkEffect.dll. The formula for this conversion is given below:
Where Y is the luminance component, CrCb is the chrominance component comprising of Cb which specifies blueness and Cr which specifies redness.
(1) From RGB to YCrCb
Y = (0.29900 * R) + (0.58700 *
G) + (0.11400 * B)
Cr = (0.50000 * R) + (-0.41869
* G) + (-0.08131 * B) + 128
Cb = (-0.16874 * R) + (-0.33126
* G) + (0.50000 * B) + 128
(2) From YCrCb to RGB
R = Y + (1.402 * (Cr -
128))
G = Y - (0.34414 * (Cb - 128))
- (0.71414 * (Cr - 128))
B = Y + (1.772 * (Cb -
128))
Ik9Effect.dll Functions:
Function Name | Explanation |
---|---|
IKAffine | Performs image Affine changes |
IKAntiAlias | Performs image anti-alias |
IKAutoSelectImage | Uses a specified color (RGB value), and selects areas of the image that have that color. |
IKAutoSelectImageEx | Uses a specified color (RGB value), and selects areas of the image that have that color. (For Delphi and C++Builder) |
IKBlur | Blurs the image |
IKCanvas | Produces a canvas effect on the image |
IKCheckSecretImage | Retrieves the digital watermark from the image |
IKChroma | Processes image chrominance |
IKConvertColor | Increases or decreases the number of colors in an image |
IKCustomFilter | Creates a user defined effect filter |
IKCutRectImage | Allows a rectangular portion of an image to be copied without the use of a mask image |
IKEmboss | Embosses the image |
IKEndDibAccess | Ends DIB access |
IKGetDibPixel | Retrieves the pixel values from the DIB |
IKGlassTile | Produces an effect similar to glass tile on the image |
IKLayer | Layers raster images together |
IKLayerEx | Layers raster images together. (Allows alpha channel) |
IKLens | Produces a lens-like effect on the image |
IKMakeRGBAImage | Creates a 32-bit RGBA image from an image and an alpha channel |
IKMosaic | Produces a mosaic on the image |
IKMotionBlur | Produces a motion blur on the image |
IKOilPaint | Produces an effect similar to an oil painting on the image |
IKOutline | Produces an outline effect on the image |
IKPanorama | Makes a panorama image from several images |
IKPasteImage | Pastes raster image together |
IKRedEyeRemoval | Removes Red Eyes from images |
IKRemoveNoise | Processes noise reduction |
IKResize | Increases or decreases the image size |
IKResizeEx | Increases or decreases the image size. (For Delphi and C++Builder) |
IKRGBGamma | Modifies RGB values using a Gamma function |
IKRGBLevel | Increases and decreases RGB values |
IKRGBRev | Reverses RGB values |
IKRGBSpline | Modifies RGB values using a Spline function |
IKRipple | Produces a ripple like effect on the image |
IKRotation | Rotates the image |
IKRotationEx | Rotates the image. (For Delphi and C++Builder) |
IKSelectImage | Selects areas on the image for processing |
IKSelectImageEx | Selects areas on the image for processing. (For Delphi and C++Builder) |
IKSetDibPixel | Sets the DIB pixel values |
IKSetGray | Changes color images to grayscale |
IKSetSecretImage | Sets a digital watermark on the image |
IKSharp | Changes the image sharpness |
IKSplitRGBAImage | Splits a 32 bit RGBA image into a 24 bit RGB image and a 8 bit alpha channel |
IKStartDibAccess | Begins DIB access |
IKUnifyColor | Changes a range of color into a single color |
IKWaves | Produces a wave-like effect on the image |
IKWhirlPinch | Produces an effect similar to pinching the image then twisting your fingers |
IKYCCGamma | Modifies image YCrCb values using a Gamma function |
IKYCCLevel | Increases and decreases YCrCb values |
IKYCCRev | Reverses YCrCb values |
IKYCCSpline | Modifies YCrCb values using a Spline function |
* Note: The ImageKit5 IK5Shade function has been renamed in the IKBlur function. (There is no change for the ImageKit6)
Structure definiton and explanation (User-defined types)
IKSELECT_IMAGE: This structure refers to images and mask
images
(1)C++Builder/Visual C++
typedef struct {
HANDLE hImgBmh;
HANDLE hMskBmh;
} IKSELECT_IMAGE;
typedef IKSELECT_IMAGE *
PTR_IKSELECT_IMAGE;
(2)Delphi
type
IKSELECT_IMAGE
= Record
hImgBmh: STHandle;
hMskBmh STHandle;
end;
(3)Visual Basic
Type IKSELECT_IMAGE
hImgBmh As
Long
hImgBmh As
Long
End Type
A. Regarding the member variables of IKSELECT_IMAGE
- hImgBmh:
- This is the image handle of the image that is processed. (This argument must set with a valid image handle)
- hMskBmh:
- This is the image handle of the mask image that is used with the hImgBmh image. (Mask images determine which area of an image will be processed) When a mask image is not being used, set this member variable to 0 or NULL. A mask image must be a 1 bit black and white image. If image handles to other types of images are passed in this member variable, the function will return an error. The white area of the mask image determines the area on the image that is processed. The black area is the mask.
Note The images set in the hImgBmh and hMskBmh member variables must be the same height and width.
B. Regarding the return values of IKSELECT_IMAGE
- hImgBmh:
- This member variable returns the image handle of the resultant image. (The image created as a result of executing an IkEffect.dll function)
- hMskBmh:
- This member variable returns the image handle of the resultant mask image. (The mask image created as a result of executing an IkEffect.dll function)
IKDIB_INFO: This structure is used to access the Device
Independent Bitmap (DIB)
(1)C++Builder/Visual C++
typedef struct {
BYTE Pal;
BYTE Red;
BYTE Green;
BYTE Blue;
char Reserved[128];
} IKDIB_INFO;
typedef IKDIB_INFO *
PTR_IKDIB_INFO;
(2)Delphi
type
IKDIB_INFO
= Record
Pal: Byte;
Red: Byte;
Green: Byte;
Blue: Byte;
Reserved: array[0..127]
of AnsiChar;
end;
(3)Visual Basic
Type IKDIB_INFO
Pal As
Byte
Red As
Byte
Green As
Byte
Blue As
Byte
Reserved(0
To 127) As Byte
End Type
- Pal:
- The palette number
- Red:
- The RGB red value
- Green:
- The RGB green value
- Blue:
- The RGB blue value
- Reserved:
- A reserved area in the structure of 64 bytes(This is used internally by the ImageKit and should be ignored)
IKRECT: This structure refers to the coordinates of a
rectangle, used by VisualBasic
Visual Basic
Type IKRECT
Left As
Long
Top As
Long
Right As
Long
Bottom As
Long
End Type
IKPOINT: This structure refers to x and y coordinates,
used by VisualBasic
Visual Basic
Type IKPOINT
x As
Long
y As
Long
End Type
User Function Definition
In Visual Basic, create the User Function using a standard module
NOT a form module.
Syntax
(1)C++Builder/Visual C++ BOOL __stdcall UserProc(short
Percent);
(2)Delphi function UserProc(Percent: Smallint): LongBool;
stdcall;
(3)Visual Basic Function UserProc(ByVal Percent As Integer) As
Long
Parameters
Name Explanation
------------------------------------------------------------------------------
Percent The percent
of the current process that is completed
Return Value
When False (0) is returned the execution is terminated. When True
(nonzero) is returned the execution continues.
The User Function is explained using the term "UserProc". Although
any name for the User Function would be appropriate, in our example
the following syntax is used to pass parameters.
(1)C++Builder/Visual C++ UserProc
(2)Delphi LONG_PTR(Addr(UserProc)) or LONG_PTR(@UserProc)
(3)Visual Basic Address Of UserProc