This function is used to allow access to pixels in the Device Independent Bitmap (DIB). This function is to be used in conjunction with the IKStartDibAccess function.
Parameters
Name | Explanation |
---|---|
hDib | The image handle of the raster image (1, 4, 8, 16, 24, or 32 bit image) |
stpDibInfo | A structure variable (user-defined type) as retrieved by the IKStartDibAccess function |
Return Value
Returns True if successful. Returns False (0) if unsuccessful.
Explanation
The IKEndDibAccess function is used to allow access to pixels in the Device Independent Bitmap (DIB). This function is to be used in conjunction with the IKStartDibAccess function. The hDib and stpDibInfo must be the same parameters as those used with the IKStartDibAccess function.
For more information about IKDIB_INFO, please refer to the explanation of the IKDIB_INFO member variables at the beginning of the Ik10Effect.dll, Ik10EffectA.dll, Ik10Effect64.dll, Ik10Effect64A.dll section.
To access the DIB and manipulate pixel data, you must use the following functions as a group.
IKStartDibAccess
l
IKGetDibPixel,
IKSetDibPixel
l
IKEndDibAccess
Sample Code
The following code starts access to the DIB, then loops through each pixel in the image, using the IKGetDibPixel function to retrieve the pixels' rgb values. Then those values are reversed and set using the IKSetDibPixel function.
In Delphi
Handle: THandle;
ImageInfo: IKIMAGE_INFO;
DibInfo: IKDIB_INFO;
Ret: LongBool;
i, j: Integer;
Handle := IKFileLoad('newtone.bmp', 0, 0, 0, 0,
nil, nil, nil);
if Handle = 0 then Exit;
Ret := IKGetImageType(Handle, ImageInfo);
Ret := IKStartDibAccess(Handle, DibInfo);
for i := 0 to ImageInfo.Height - 1 do
for j := 0 to ImageInfo.Width - 1 do
begin
Ret := IKGetDibPixel(DibInfo, j, i);
if ImageInfo.BitCount = 1 then
begin
if DibInfo.PalNo <> 0 then
DibInfo.PalNo := 0
else
DibInfo.PalNo := 1;
end
else if ImageInfo.BitCount > 8 then
begin
DibInfo.Blue := 255 - DibInfo.Blue;
DibInfo.Green := 255 - DibInfo.Green;
DibInfo.Red := 255 - DibInfo.Red;
end;
Ret := IKSetDibPixel(DibInfo, j, i);
end;
end;
Ret := IKEndDibAccess(Handle, DibInfo);
Ret := IKBmpFileSave('newtone.bmp', Handle, False, 0, nil, nil, nil);
IKFreeMemory(Handle);