The Ik8File.dll, Ik8FileA.dll, Ik8File64.dll, and Ik8File64A.dll provides functions for loading and saving image files.
The Ik8File.dll corresponds to the 32 bit Unicode version.
The Ik8FileA.dll corresponds to the 32 bit ANSI version.
The Ik8File64.dll corresponds to the 64 bit Unicode version.
The Ik8File64A.dll corresponds to the 64 bit ANSI version.
The discussion below will use "Ik8File.dll" to refer to all 4 of these version dlls unless specifically noted.
Ik8File.dll Functions:
Function Name | Explanation |
---|---|
IKBmpFileLoad | Loads a raster image from a BMP file |
IKBmpFileLoadMem | Loads a raster image from BMP format raw image data |
IKBmpFileSave | Saves a raster image into a BMP image file |
IKBmpFileSaveMem | Saves raster image data in BMP format as raw image data |
IKCMYKBmpPlaneFileLoad | Loads a bmp file that has been saved in seperate CMYK planes |
IKCMYKBmpPlaneFileSave | Saves a raster image into seperate CMYK planes |
IKDxfFileLoad | Loads vector image data from a DXF file |
IKDxfFileLoadMem | Loads a vector image from DXF format raw image data |
IKDxfFileSave | Saves vector image data in a DXF file |
IKDxfFileSaveMem | Saves vector image data in DXF format as raw image data |
IKEmfFileLoad | Loads vector image data from an EMF file |
IKEmfFileLoadMem | Loads a vector image from EMF format raw image data |
IKEmfFileSave | Saves vector image data in an EMF file |
IKEmfFileSaveMem | Saves vector image data in EMF format as raw image data |
IKFileLoad | Loads image data from a file |
IKFileLoadAsRawData | Loads data "as is" from an image file |
IKFileLoadMem | Loads raw image data. |
IKFileSaveAsRawData | Saves raw image data into a file |
IKFileType | Retrieves various image information |
IKFileTypeMem | Retrieves various information from the raw image data |
IKFpxFileLoad | Loads raster image data from a FPX file |
IKFpxFileLoadMem | Loads a raster image from FPX format raw image data |
IKFpxFileSave | Saves raster image data in a FPX file |
IKFpxFileSaveMem | Saves raster image data in FPX format as raw image data |
IKFTPConnect | Connects to an FTP server |
IKFTPDeleteFile | Deletes an existing file from the FTP server. (Includes connecting to and disconnecting from server) |
IKFTPDeleteFileEx | Deletes an existing file from the FTP server |
IKFTPDisconnect | Disconnects from an FTP server |
IKFTPGetFile | Retrieves a file from the FTP server. (Includes connecting to and disconnecting from server) |
IKFTPGetFileEx | Retrieves a file from the FTP server |
IKFTPPutFile | Transfers a file to the FTP server. (Includes connecting to and disconnecting from server) |
IKFTPPutFileEx | Transfers a file to the FTP server |
IKFTPRenameFile | Renames an existing file on the FTP server. (Includes connecting to and disconnecting from server) |
IKFTPRenameFileEx | Renames an existing file on the FTP server. |
IKGifFileLoad | Loads raster image data from a GIF file |
IKGifFileLoadMem | Loads a raster image from GIF format raw image data |
IKGifFileSave | Saves raster image data in a GIF file |
IKGifFileSaveMem | Saves raster image data in GIF format as raw image data |
IKHTTPConnect | Connects to an HTTP(S) server |
IKHTTPDisconnect | Disconnects from an HTTP(S) server |
IKHTTPGetFile | Retrieves a file from the HTTP(S) server. (Includes connecting to and disconnecting from server) |
IKHTTPGetFileEx | Retrieves a file from the HTTP(S) server |
IKHTTPPutFile | Transfers a file to the HTTP(S) server. (Includes connecting to and disconnecting from server) |
IKHTTPPutFileEx | Transfers a file to the HTTP(S) server |
IKJ2kFileLoad | Loads raster image data from a JPEG2000 file |
IKJ2kFileLoadMem | Loads a raster image from JPEG2000 format raw image data |
IKJ2kFileSave | Saves raster image data in a JPEG2000 file |
IKJ2kFileSaveMem | Saves raster image data in JPEG2000 format as raw image data |
IKJpegExifInfo | Retrieves information about the primary image and thumbnail image from an Exif (JPEG) file |
IKJpegExifInfoMem | Retrieves information about the main image and the thumbnail image from Exif format raw image data |
IKJpegFileLoad | Loads raster image data from a JPEG file |
IKJpegFileLoadMem | Loads a raster image from JPEG format raw image data |
IKJpegFileSave | Saves raster image data in a JPEG file |
IKJpegFileSaveEx | Saves raster image data and Exif information in a JPEG file |
IKJpegFileSaveMem | Saves raster image data in JPEG format as raw image data |
IKJpegFileSaveMemEx | Saves raster image data and Exif information in JPEG format as raw image data |
IKOpenFileDialog | Displays the Open dialog which can include a file preview and file information |
IKOpenFileDlg | Displays the "Open" dialog which can include a file preview |
IKPcxFileLoad | Loads raster image data from a PCX file |
IKPcxFileLoadMem | Loads a raster image from PCX format raw image data |
IKPcxFileSave | Saves raster image data in a PCX file |
IKPcxFileSaveMem | Saves raster image data in PCX format as raw image data |
IKPngFileLoad | Loads raster image data from a PNG file |
IKPngFileLoadEx | Loads raster image data, including alpha channel data, from a PNG file |
IKPngFileLoadExMem | Loads a raster image including an alpha channel from PNG format raw image data |
IKPngFileLoadMem | Loads a raster image from PNG format raw image data |
IKPngFileSave | Saves raster image data in a PNG file |
IKPngFileSaveEx | Saves raster image data, including alpha channel data, in a PNG file |
IKPngFileSaveExMem | Saves raster image data, including alpha channel data, in PNG format as raw image data |
IKPngFileSaveMem | Saves raster image data in PNG format as raw image data |
IKRGBBmpPlaneFileLoad | Loads a bmp file that has been saved in seperate RGB planes |
IKRGBBmpPlaneFileSave | Saves a raster image into seperate RGB planes |
IKSaveFileDialog | Displays the "Save" dialog which includes a file preview and file information |
IKSaveFileDlg | Displays the "Save" dialog box which includes the file preview function |
IKSaveFileDlgEx | Displays the "Save" dialog which includes the file preview function |
IKSvgFileLoad | Loads vector image data from a SVG file |
IKSvgFileLoadMem | Loads a vector image from SVG format raw image data |
IKSvgFileSave | Saves vector image data in a SVG file |
IKSvgFileSaveMem | Saves vector image data in SVG format as raw image data |
IKSxfP21FileLoad | Loads vector image data from a SFX p21 format file |
IKSxfP21FileLoadMem | Loads a vector image from SXF p21 format raw image data |
IKSxfP21FileSave | Saves vector image data in an SXF p21 format file |
IKSxfP21FileSaveMem | Saves vector image data in SXF p21 format as raw image data |
IKSxfSfcFileLoad | Loads vector image data from an SXF sfc format file |
IKSxfSfcFileLoadMem | Loads a vector image from SXF sfc format raw image data |
IKSxfFileSave | Saves vector image data in a SXF Sfc format file |
IKSxfSfcFileSaveMem | Saves vector image data in SXF sfc format as raw image data |
IKTiffFileLoad | Loads raster image data from a TIFF file |
IKTiffFileLoadMem | Loads raster image data from a TIFF format raw image data |
IKTiffFileSave | Saves raster image data in a TIFF file |
IKTiffFileSaveMem | Saves raster image data in TIFF format as raw image data |
IKWmfFileLoad | Loads vector image data from a WMF file |
IKWmfFileLoadMem | Loads a vector image from WMF format raw image data |
IKWmfFileSave | Saves vector image data in a WMF file |
IKWmfFileSaveMem | Saves vector image data in WMF format as raw image data |
IKYCCBmpPlaneFileLoad | Loads raster image from a bmp file that has been saved in seperate YCrCb planes into the memory |
IKYCCBmpPlaneFileSave | Saves a raster image into seperate YCrCb planes |
Structure definitions (User-defined types)
IKFILE_INFO: refers to file information (use either
IKFileType or IKFileTypeMem)
(1)C++Builder/Visual C++
typedef struct {
short BitCount;
long
Xdpi;
long
Ydpi;
long
Width;
long
Height;
long
WidthByte;
long
ImageSize;
short FileType;
short Interlace;
short MaxPage;
long
FileSize;
char
Comment[1024];
WORD CommentLen;
short CreationTimeYear;
short CreationTimeMonth;
short CreationTimeDay;
short CreationTimeHour;
short CreationTimeMinute;
short CreationTimeSecond;
short LastAccessTimeYear;
short LastAccessTimeMonth;
short LastAccessTimeDay;
short LastAccessTimeHour;
short LastAccessTimeMinute;
short LastAccessTimeSecond;
short LastWriteTimeYear;
short LastWriteTimeMonth;
short LastWriteTimeDay;
short LastWriteTimeHour;
short LastWriteTimeMinute;
short LastWriteTimeSecond;
} IKFILE_INFO;
typedef IKFILE_INFO *
PTR_IKFILE_INFO;
(2)Delphi
type
IKFILE_INFO
= Record
BitCount: Smallint;
Xdpi:
Longint;
Ydpi:
Longint;
Width:
Longint;
Height: Longint;
WidthByte: Longint;
ImageSize: Longint;
FileType: Smallint;
Interlace: Smallint;
MaxPage: Smallint;
FileSize: Longint;
Comment: array
[0..1023] of Char;
CommentLen:
Word;
CreationTimeYear:
Smallint;
CreationTimeMonth:
Smallint;
CreationTimeDay:
Smallint;
CreationTimeHour:
Smallint;
CreationTimeMinute:
Smallint;
CreationTimeSecond:
Smallint;
LastAccessTimeYear:
Smallint;
LastAccessTimeMonth:
Smallint;
LastAccessTimeDay:
Smallint;
LastAccessTimeHour:
Smallint;
LastAccessTimeMinute:
Smallint;
LastAccessTimeSecond:
Smallint;
LastWriteTimeYear:
Smallint;
LastWriteTimeMonth:
Smallint;
LastWriteTimeDay:
Smallint;
LastWriteTimeHour:
Smallint;
LastWriteTimeMinute:
Smallint;
LastWriteTimeSecond: Smallint;
end;
(3)Visual Basic
Type IKFILE_INFO
BitCount As
Integer
Xdpi As
Long
Ydpi As
Long
Width As
Long
Height As
Long
WidthByte As
Long
ImageSize As
Long
FileType
As Integer
Interlace As
Integer
MaxPage As
Integer
FileSize
As Long
Comment As
String * 1024
CommentLen
As Integer
CreationTimeYear
As Integer
CreationTimeMonth
As Integer
CreationTimeDay
As Integer
CreationTimeHour
As Integer
CreationTimeMinute
As Integer
CreationTimeSecond
As Integer
LastAccessTimeYear
As Integer
LastAccessTimeMonth
As Integer
LastAccessTimeDay As
Integer
LastAccessTimeHour As
Integer
LastAccessTimeMinute As
Integer
LastAccessTimeSecond As
Integer
LastWriteTimeYear As
Integer
LastWriteTimeMonth As
Integer
LastWriteTimeDay As
Integer
LastWriteTimeHour As
Integer
LastWriteTimeMinute As
Integer
LastWriteTimeSecond As
Integer
End Type
Executing the IKFileType function sets values into each member
variable. Except for MaxPage and FileSize, the values set by the
IkFileType function reflect the specified page information. With
the exception of TIFF file format, Comment values are for the
specified file.
- BitCount:
- The number of bits per pixel in the image *1
1:2 colors, 4:16 colors, 8:256 colors, 16:16 bit color, 24:24 bit color, 32:32 color - Xdpi:
- The number of pixels per horizontal inch of the image
- Ydpi:
- The number of pixels per vertical inch of the image
- Width:
- The width of an image in pixels
- Height:
- The height of an image in pixels
- WidthByte:
- The number of bytes per line in the image *1
- ImageSize:
- The size of an image in bytes *1
- FileType:
- Refers to the file type
Value: Format Value: Format Value: Format Value: Format 1: BMP/DIB 2: BMP/DIB(RLE4) 3: BMP/DIB(RLE8) 4: JPEG(Standard DCT) 5: JPEG(Progressive DCT) 6: GIF(87a) 7: GIF(89a) 8: TIFF(Uncompressed) 9: TIFF(CCITTRLE) 10: TIFF(GROUP3-1D) 11: TIFF(GROUP3-2D) 12: TIFF(GROUP4) 13: TIFF(PACKBITS) 14: TIFF(LZW) 15: PNG 16: FPX(Uncompressed) 17: FPX(Single Color) 18: FPX(JPEG) 19: PCX 20:WMF 21: EMF 22: DXF 23: Exif(JPEG) 24: SVG 25: JPEG2000 26: JPEG2000(Code Stream) 27: SXF(p21) 28: SXF(sfc) 29: TIFF(JPEG)
The ImageKit supports a portion of the Exif version 2.3 tags
Note: If an unsupported image is loaded, then the FileType will return 0. - Interlace:
- Sets whether or not Gif and Png images are interlaced (0: No Interlace, 1: Interlacing) *1
- MaxPage:
- Refers to the number of pages of the image file
- FileSize:
- Refers to the size of the actual image data
- Comment:
- Refers to the comment in certain image files *1, *3
Regarding the format of the comment, please refer to the appropriate save file command - CommentLen:
- Refers to the length of the string in the Comment *2
- CreationTimeYear:
- Refers to the year when the file was created *2
- CreationTimeMonth:
- Refers to the month when the file was created *2
- CreationTimeDay:
- Refers to the day when the file was created *2
- CreationTimeHour:
- Refers to the hour when the file was created *2
- CreationTimeMinute:
- Refers to the minute when the file was created *2
- CreationTimeSecond:
- Refers to the second when the file was created *2
- LastAccessTimeYear:
- Refers to the year when the file was last accessed *2
- LastAccessTimeMonth:
- Refers to the month when the file was last accessed *2
- LastAccessTimeDay:
- Refers to the day when the file was last accessed *2
- LastAccessTimeHour:
- Refers to the hour when the file was last accessed *2
- LastAccessTimeMinute:
- Refers to the minute when the file was last accessed *2
- LastAccessTimeSecond:
- Refers to the second when the file was last accessed *2
- LastWriteTimeYear:
- Refers to the year when the file was last modified *2
- LastWriteTimeMonth:
- Refers to the month when the file was last modified *2
- LastWriteTimeDay:
- Refers to the day when the file was last modified *2
- LastWriteTimeHour:
- Refers to the hour when the file was last modified *2
- LastWriteTimeMinute:
- Refers to the minute when the file was last modified *2
- LastWriteTimeSecond:
- Refers to the second when the file was last modified *2
*1 Cannot be used with vector images
*2 These are members added in the ImageKit7. This is important if
converting ImageKit5 or ImageKit6 programs
*3 The size of these members were increased in the ImageKit7. This
is important if converting ImageKit5 or ImageKit6 programs.
IMAGE_TAG: Refers to the main image and thumbnail image
information in an Exif file
(1)C++Builder/Visual C++
typedef struct {
unsigned
short Compression;
unsigned
short Orientation;
unsigned
short YCbCrPositioning;
unsigned
long XResolution[2];
unsigned
long YResolution[2];
unsigned
short ResolutionUnit;
char DateTime[20];
char ImageDescription[257];
WORD ImageDescriptionLen;
char Make[257];
WORD MakeLen;
char Model[257];
WORD ModelLen;
char Software[257];
WORD SoftwareLen;
char Artist[257];
WORD ArtistLen;
char Copyright[257];
WORD CopyrightLen;
HANDLE ThumbImageHandle;
} IMAGE_TAG;
typedef IMAGE_TAG *
PTR_IMAGE_TAG;
(2)Delphi
type
IMAGE_TAG
= Record
Compression: Word;
Orientation: Word;
YCbCrPositioning: Word;
XResolution: array[0..1]
of DWORD;
YResolution: array[0..1]
of DWORD;
ResolutionUnit: Word;
DateTime:
array[0..19] of Char;
ImageDescription: array[0..256]
of Char;
ImageDescriptionLen: Word;
Make:
array[0..256] of Char;
MakeLen: Word;
Model:
array[0..256] of Char;
ModelLen: Word;
Software: array[0..256]
of Char;
SoftwareLen: Word;
Artist:
array[0..256] of Char;
ArtistLen:
Word;
Copyright: array[0..256]
of Char;
CopyrightLen: Word;
ThumbImageHandle: THandle;
end;
(3)Visual Basic
Type IMAGE_TAG
Compression
As Integer
Orientation
As Integer
YCbCrPositioning
As Integer
XResolution(0
To 1) As Long
YResolution(0
To 1) As Long
ResolutionUnit
As Integer
DateTime
As String * 20
ImageDescription As
String * 257
ImageDescriptionLen As
Integer
Make
As String * 257
MakeLen As
Integer
Model As String
* 257
ModelLen As
Integer
Software As
String * 257
SoftwareLen As
Integer
Artist
As String * 257
ArtistLen
As Integer
Copyright
As String * 257
CopyrightLen
As Integer
ThumbImageHandle
As Long
End Type
- Compression:
- Refers to the type of image compression (1: Uncompressed, 6: JPEG Compression, *Thumbnail image only)
- Orientation:
- Refers to the image orientation as viewed in terms of rows and columns
- YCbCrPositioning:
- Refers to the position of chrominance components (CbCr) in relation to the luminance component (Y) (1: center, 2: Co-sited)
- XResolution:
- Refers to the number of pixels per ResolutionUnit in the image
in the horizontal direction
ResolutionUnit = XResolution[0] / XResolution[1] - YResolution:
- Refers to the number of pixels per ResolutionUnit in the image
in the vertical direction
ResolutionUnit = YResolution[0] / YResolution[1] - ResolutionUnit:
- The unit for measuring XResolution and Yresolution (2: Inches, 3: Centimeters)
- DateTime:
- The date and time of original file generation (The format is "YYYY:MM:DD HH:MM:SS")
- ImageDescription:
- Refers to the character string giving the title of the image *2
- ImageDescriptionLen:
- Refers to the length of the string describing the ImageDescription *1
- Make:
- Refers to the manufacturer of the recording equipment that generated the image *2
- MakeLen:
- Refers to the length of the string describing the Make *1
- Model:
- Refers to the model name of the equipment that generated the image *2
- ModelLen:
- Refers to the length of the string describing the Model *1
- Software:
- Refers to the name and version of the software used to generate the image *2
- SoftwareLen:
- Refers to the length of the string describing the Software *1
- Artist:
- Refers to the camera owner, photographer, or creator of the image *2
- ArtistLen:
- Refers to the length of the string describing the Artist *1
- Copyright:
- Refers to the copyright information for the image *2
- CopyrightLen:
- Refers to the length of the string describing the Copyright *1
- ThumbImageHandle:
- The image handle (address) to the thumbnail image (thumbnail image only)
*1 These are members newly added in the ImageKit8. This is
important if converting ImageKit6 programs
*2 The size of these members was changed in the ImageKit8. This is
important if converting ImageKit6 or ImageKit7 programs
EXIF_TAG: Refers to the Exif tag information
(1)C++Builder/Visual C++
typedef struct {
char
Exif_Version[5];
char
FlashPix_Version[5];
unsigned
short ColorSpace;
unsigned
long PixelXDimension;
unsigned
long Pixel,xDimension;
char
ComponentsConfiguration[5];
unsigned
long CompressedBitsPerPixel[2];
char
MakerNote[257];
WORD
MakerNoteLen;
char
UserComment[257];
WORD
UserCommentLen;
char
UserCommentID[8];
char
DateTimeOriginal[20];
char
DateTimeDigitized[20];
char
SubSecTime[129];
WORD
SubSecTimeLen;
char
SubSecTimeOriginal[129];
WORD
SubSecTimeOriginalLen;
char
SubSecTimeDigitized[129];
WORD
SubSecTimeDigitizedLen;
unsigned
long ExposureTime[2];
long
ShutterSpeedValue[2];
unsigned
long ApertureValue[2];
long
BrightnessValue[2];
long
ExposureBiasValue[2];
unsigned
long MaxApertureValue[2];
unsigned
long SubjectDistance[2];
unsigned
short MeteringMode;
unsigned
short LightSource;
unsigned
short Flash;
unsigned
long FocalLength[2];
unsigned
long FNumber[2];
unsigned
short ExposureProgram;
char
SpectralSensitivity[257];
WORD SpectralSensitivityLen;
unsigned
short ISOSpeedRatings;
unsigned
long FlashEnergy[2];
unsigned
long FocalPlaneXResolution[2];
unsigned
long FocalPlaneYResolution[2];
unsigned
short FocalPlaneResolutionUnit;
unsigned
short SubjectLocationX;
unsigned
short SubjectLocationY;
unsigned
long ExposureIndex[2];
unsigned
short SensingMethod;
BYTE FileSource;
BYTE SceneType;
unsigned
short WhiteBalance;
unsigned
short SceneCaptureType;
unsigned
short Contrast;
unsigned
short Saturation;
unsigned
short Sharpness;
} EXIF_TAG;
typedef EXIF_TAG * PTR_EXIF_TAG;
(2)Delphi
type
EXIF_TAG
= Record
Exif_Version:
array[0..4] of Char;
FlashPix_Version:
array[0..4] of Char;
ColorSpace:
Word;
PixelXDimension:
DWORD;
PixelYDimension:
DWORD;
ComponentsConfiguration: array[0..4]
of Char;
CompressedBitsPerPixel: array[0..1] of DWORD;
MakerNote:
array[0..256] of Char;
MakerNoteLen:
Word;
UserComment:
array[0..256] of Char;
UserCommentLen:
Word;
UserCommentID: array[0..7]
of Char;
DateTimeOriginal: array[0..19]
of Char;
DateTimeDigitized: array[0..19]
of Char;
SubSecTime: array[0..128]
of Char;
SubSecTimeLen: Word;
SubSecTimeOriginal: array[0..128]
of Char;
SubSecTimeOriginalLen: Word;
SubSecTimeDigitized: array[0..128]
of Char;
SubSecTimeDigitizedLen: Word;
ExposureTime: array[0..1]
of DWORD;
ShutterSpeedValue: array[0..1]
of Longint;
ApertureValue:
array[0..1] of DWORD;
BrightnessValue: array[0..1]
of Longint;
ExposureBiasValue: array[0..1]
of Longint;
MaxApertureValue: array[0..1]
of DWORD;
SubjectDistance: array[0..1]
of DWORD;
MeteringMode:
Word;
LightSource:
Word;
Flash:
Word;
FocalLength:
array[0..1] of DWORD;
FNumber:
array[0..1] of DWORD;
ExposureProgram: Word;
SpectralSensitivity: array[0..256]
of Char;
SpectralSensitivityLen: Word;
ISOSpeedRatings: Word;
FlashEnergy:
array[0..1] of DWORD;
FocalPlaneXResolution: array[0..1]
of DWORD;
FocalPlaneYResolution: array[0..1]
of DWORD;
FocalPlaneResolutionUnit: Word;
SubjectLocationX:
Word;
SubjectLocationY:
Word;
ExposureIndex:
array[0..1] of DWORD;
SensingMethod:
Word;
FileSource:
Byte;
SceneType:
Byte;
WhiteBalance: Word;
SceneCaptureType: Word;
Contrast:
Word;
Saturation:
Word;
Sharpness:
Word;
end;
(3)Visual Basic
Type EXIF_TAG
Exif_Version
As String * 5
FlashPix_Version
As String * 5
ColorSpace
As Integer
PixelXDimension
As Long
PixelYDimension
As Long
ComponentsConfiguration
As String * 5
CompressedBitsPerPixel(0
To 1) As Long
MakerNote
As String * 257
MakerNoteLen
As Integer
UserComment
As String * 257
UserCommentLen
As Integer
UserCommentID
As String * 8
DateTimeOriginal
As String * 20
DateTimeDigitized As
String * 20
SubSecTime
As String * 129
SubSecTimeLen
As Integer
SubSecTimeOriginal As
String * 129
SubSecTimeOriginalLen
As Integer
SubSecTimeDigitized As
String * 129
SubSecTimeDigitizedLen
As Integer
ExposureTime(0
To 1) As Long
ShutterSpeedValue(0
To 1) As Long
ApertureValue(0
To 1) As Long
BrightnessValue(0
To 1) As Long
ExposureBiasValue(0
To 1) As Long
MaxApertureValue(0
To 1) As Long
SubjectDistance(0
To 1) As Long
MeteringMode As
Integer
LightSource
As Integer
Flash
As Integer
FocalLength(0
To 1) As Long
FNumber(0
To 1) As Long
ExposureProgram As
Integer
SpectralSensitivity As
String * 257
SpectralSensitivityLen As
Integer
ISOSpeedRatings
As Integer
FlashEnergy(0
To 1) As Long
FocalPlaneXResolution(0
To 1) As Long
FocalPlaneYResolution(0
To 1) As Long
FocalPlaneResolutionUnit As
Integer
SubjectLocationX As
Integer
SubjectLocationY As
Integer
ExposureIndex(0
To 1) As Long
SensingMethod
As Integer
FileSource
As Byte
SceneType
As Byte
WhiteBalance As Integer
SceneCaptureType As Integer
Contrast
As Integer
Saturation
As Integer
Sharpness
As Integer
End Type
Tags Related to Version Information
- Exif_Version:
- Refers to the version of the Exif Standard supported (For example: "0210")
- FlashPix_Version:
- Refers to the version of the FPXR file FlashPix format supported (For example: "0100")
Tags Related to Characteristics of Image Data
- ColorSpace:
- Color space information (1: sRGB)
Tags Related to Composition of Image Data
- PixelXDimension:
- Refers to the width of the image
- PixelYDimension:
- Refers to the height of the image
- ComponentsConfiguration:
- Refers to the color of each color plane in the Exif image arranged in order from the 1st plane to the 4th plane
- CompressedBitsPerPixel:
- Refers to the compression mode used for a compressed
image(bits/pixel)
Compression mode = CompressedBitsPerPixel[0] / CompressedBitsPerPixel[1]
Tags Related to User Information
- MakerNote:
- Comments of the manufacturer of the Exif writer *2
- MakerNoteLen:
- The length of the string describing the MakerNote *1
- UserComment:
- Comments or keywords that the Exif user can place on the image *2
- UserCommentLen:
- The length of the string describing the UserComment *1
- UserCommentID:
- An identification code (8 bytes) that occurs at the start of
the UserComment tag. (Excess space is padded with NULL(0x00)
Character Code Code Input Method (8byte) Reference ASCII 0x41,0x53,0x43,0x49,0x49,0x00,0x00,0x00 ITU-T T.50 IA5 JIS 0x4A,0x49,0x53,0x00,0x00,0x00,0x00,0x00 JIS X0208-1990 Unicode 0x55,0x4E,0x49,0x43,0x4F,0x44,0x45,0x00 Unicode Standard Undefined 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 Undefined
* In Delphi, 0x should be replaced with $. In Visual Basic, 0x should be replaced with &H.
Tags Related to Date Time
- DateTimeDigitized:
- The date and time when the image was stored as digital data (Format is "YYYY:MM:DD HH:MM:SS")
- DateTimeOriginal:
- The data and time when the original image data was generated (Format is "YYYY:MM:DD HH:MM:SS")
- SubSecTime:
- Records fractions of seconds for the DateTime member of the IMAGE_TAG structure *2
- SubSecTimeLen:
- The length of the string in SubSecTime. *3
- SubSecTimeOriginal:
- Records fractions of seconds for DateTimeOriginal *2
- SubSecTimeOriginalLen:
- The length of the string in SubSecTimeOriginal. *3
- SubSecTimeDigitized:
- Records fractions of seconds for DateTimeDigitized *2
- SubSecTimeDigitizedLen:
- The length of the string in SubSecTimeDigitized. *3
Tags related to photographic conditions
- ExposureTime:
- The exposure time (in seconds)
ExposureTime = ExposureTime[0] / ExposureTime[1] - ShutterSpeedValue:
- The shutter speed
The shutter speed (unit is the APEX value) = ShutterSpeedValue[0] / ShutterSpeedValue[1] - ApertureValue:
- The lens aperature value
The lens aperature value (unit is the APEX value) = ApertureValue[0] / ApertureValue[1] - BrightnessValue:
- The brightness value. Ordinarily brightness is given in the
range from -99.99 to 99.99
he brightness value (unit is the APEX value) = BrightnessValue[0] / BrightnessValue[1] - ExposureBiasValue:
- The exposure bias value. Ordinarily exposure bias is given in
the range from -99.99 to 99.99.
The exposure bias value (unit is the APEX value) = ExposureBiasValue[0] / ExposureBiasValue[1] - MaxApertureValue:
- The smallest F value of the lens. Ordinarily the smallest F
value of the lens is given in the range from 00.00 to 99.99.
The smallest F value of the lens (unit is the APEX value) = MaxApertureValue[0] / MaxApertureValue[1] - SubjectDistance:
- The distance to the subject
The distance to the subject (in meters) = SubjectDistance[0] / SubjectDistance [1] - MeteringMode:
- The metering mode
(0: Unknown, 1: Average, 2: CounterWeightedAverage, 3: Spot, 4: MultiSpot, 5: Pattern, 6: Partial, 255: Other) - LightSource:
- The type of light source
(0: Unknown, 1: Daylight, 2: Fluorescent, 3: Tungsten (incandescent light), 4: Flash, 9: Clear daylight, 10: Cloudy day, 11: Shadow, 12: Daylight color fluorescent light (D:5700 - 7100K), 13: Mid-day white fluorescent light (N: 4600 - 5500K), 14: White fluorescent light (W: 3800 - 4500K), 15: White fluorescent light (WW: 3200 - 3800K), 16: Fluorescent light bulb (L: 2600 - 3250K), 17: Standard light A, 18: Standard light B, 19: Standard light C, 20: D55, 21: D65, 22: D75, 23: D50, 24: ISO studio tungsten, 255: Other) - Flash:
- The flash firing status and the flash return status.
Bit 0 indicates the flash firing status, bits 1 and 2 indicate the flash return status, bits 3 and 4 indicate the camera flash mode, bit 5 indicates if the flash function is enabled, and bit 6 indicates red-eye removal mode.
Values for bit 0 indicate whether the flash fired.
0b = Flash did not fire
1b = Flash fired
Values for bits 1 and 2 indicate the return status
00b = No flash return detection function
01b = Reserved
10b = Flash return light not detected
11b = Flash return light detected
Values for bits 3 and 4 indicate camera flash mode
00b = Unknown flash mode
01b = Compulsory flash firing
10b = Compulsory flash supression
11b = Auto mode
Values for bit 5 indicate whether flash function is enabled
0b = Flash function enabled
1b = Flash function disabled
Values for bit 6 indicate whether red eye removal is enabled
0b = Red eye removal is not used or unknown
1b = Red eye removal is used
Resulting flash tag values (in hexadecimal notation)
0x0000 = Flash did not fire
0x0001 = Flash fired
0x0005 = Flash return light not detected
0x0007 = Flash return light detected
*In Delphi, a $ is used instead of 0x, In Visual Basic an &H is used. - FocalLength:
- The focal length of the lens
The actual focal length of the lens (in mm) = FocalLength[0] / FocalLength[1] - FNumber:
- The Fnumber
The FNumber = FNumber[0] / FNumber[1] - ExposureProgram:
- The class of the program used by the camera to set exposure
when the image was taken.
(0: Not defined, 1: Manual, 2: Normal program, 3: Aperture priority, 4: Shutter priority, 5: Creative program (biased toward depth of field), 6: Action program biased toward fast shutter speed), 7: Portrait mode (for clsoeup photos with the background out of focus), 8: Landscape mode (for landscapes with the background in focus - SpectralSensitivity:
- The spectral sensitivity of each channel of the camera used.
- SpectralSensitivityLen:
- The length of the string describing the SpectralSensitivity *1
- ISOSpeedRatings:
- The ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232xiv
- FlashEnergy:
- The strobe energy at the time the image was captured as
measured in Beam Candle Power Seconds
Flash energy (in BCPS) = FlashEnergy[0] / FlashEnergy[1] - FocalPlaneXResolution:
- The number of pixels in the image horizontal direction per
FocalPlaneResolutionUnit on the camera focal plane
The FocalPlaneXResolution = FocalPlaneXResolution[0] / FocalPlaneXResolution[1] - FocalPlaneYResolution:
- The number of pixels in the image vertical direction per
FocalPlaneResolutionUnit on the camera focal plane
FocalPlaneYResolution = FocalPlaneYResolution[0] / FocalPlaneYResolution[1] - FocalPlaneResolutionUnit:
- The unit for measuring FocalPlaneXResolution and FocalPlaneYResolution.(2: Inches, 3: Centimeters)
- SubjectLocationX:
- The horizontal coordinate of the center of the main subject of the scene
- SubjectLocationY:
- The vertical coordinate of the center of the main subject of the scene
- ExposureIndex:
- The exposure index selected on the camera or input device at
the time the image was captured
The exposure index = ExposureIndex[0] / ExposureIndex[1] - SensingMethod:
- The image sensor type on the camera or input device
(1: Not defined, 2: One-chip color area sensor, 3: Two-chip color area sensor, 4: Three-chip color area sensor, 5: Color sequential area sensor, 7: Trilinear sensor, 8: Color sequential linear sensor) - FileSource:
- The image source. If a DSC (Digital Still Camera) recorded the image, this value will be set to 3 indicating that the image was recorded on a DSC
- SceneType:
- The type of scene. If a DSC recorded the image, this value will be set to 1 indicating that the image was directly photographed
- White Balance:
- Indicates the white balance mode. *3
- ScaneCaptureType:
- Indicates the type of scene when image was captured. *3
- Contrast:
- Contrast when image was captured. *3
- Saturation:
- Saturation when image was captured. *3
- Sharpness:
- Sharpness when image was captured. *3
APEX is the Additive System of Photographic Exposure
BCPS is the Beam Candle Power Seconds
*1 These are members newly added in the ImageKit7. This is
important to note if converting ImageKit6 programs
*2 The size of these members have changed in the ImageKit8. This is
important to note if converting ImageKit6 or ImageKit7 programs
*3 These are members newly added in the ImageKit8. This is
important to note if converting ImageKit6 or ImageKit7 programs
GPS_TAG: Refers to GPS tag information
(1)C++Builder/Visual C++
typedef struct {
char
GPS_Version[5];
char
MapDatum[129];
WORD
MapDatumLen;
char
Latitude[2];
unsigned
long LatitudeD[2];
unsigned
long LatitudeM[2];
unsigned
long LatitudeS[2];
char
Longitude[2];
unsigned
long LongitudeD[2];
unsigned
long LongitudeM[2];
unsigned
long LongitudeS[2];
BYTE
AltitudeRef;
unsigned
long Altitude[2];
unsigned
long TimeStampH[2];
unsigned
long TimeStampM[2];
unsigned
long TimeStampS[2];
char
ProcessingMethod[257];
WORD
ProcessingMethodLen;
char
ProcessingMethodID[8];
char
DateStamp[11];
} GPS_TAG;
typedef GPS_TAG * PTR_GPS_TAG;
(2)Delphi
type
GPS_TAG
= Record
GPS_Version:
array[0..4] of AnsiChar;
MapDatum:
array[0..128] of AnsiChar;
MapDatumLen:
Word;
Latitude:
array[0..1] of AnsiChar;
LatitudeD:
array[0..1] of DWORD;
LatitudeM:
array[0..1] of
DWORD;
LatitudeS: array[0..1]
of DWORD;
Longitude:
array[0..1] of AnsiChar;
LongitudeD:
array[0..1] of DWORD;
LongitudeM:
array[0..1] of DWORD;
LongitudeS:
array[0..1] of DWORD;
AltitudeRef:
Byte;
Altitude:
array[0..1] of DWORD;
TimeStampH: array[0..1]
of DWORD;
TimeStampM: array[0..1]
of DWORD;
TimeStampS: array[0..1]
of DWORD;
ProcessingMethod: array[0..256]
of AnsiChar;
ProcessingMethodLen: Word;
ProcessingMethodID: array[0..7]
of AnsiChar;
DateStamp:
array[0..10] of AnsiChar;
end;
(3)Visual Basic
Type GPS_TAG
GPS_Version As
String * 5
MapDatum
As String * 128
MapDatumLen
As Integer
Latitude
As String * 2
LatitudeD(0
To 1) As Long
LatitudeM(0
To 1) As Long
LatitudeS(0
To 1) As Long
Longitude
As
String * 2
LongitudeD(0
To 1) As Long
LongitudeM(0
To 1) As Long
LongitudeS(0
To 1) As Long
AltitudeRef
As Byte
Altitude(0
To 1) As Long
TimeStampH(0
To 1) As Long
TimeStampM(0
To 1) As Long
TimeStampS(0
To 1) As Long
ProcessingMethod As String
* 257
ProcessingMethodLen As Integer
ProcessingMethodID As String
* 8
DateStamp As String
* 11
End Type
- GPS_Version:
- Refers to the GPS tag version (i.e. "2000")
- MapDatum:
- Refers to the name of the map data used *1
- MapDatumLen:
- Refers to the length of the string used in MapDatum *2
- Latitude:
- Refers to the latitude direction where the image was taken. (i.e. "N" or "S")
- LatitudeD:
- The latitude in degrees where the image was taken.
LatitudeD = LatitudeD[0] / LatitudeD[1] - LatitudeM:
- The latitude in minutes where the image was taken
LatitudeM = LatitudeM[0] / LatitudeM[1] - LatitudeS:
- The latitude in seconds where the image was taken
LatitudeS = LatitudeS[0] / LatitudeS[1] - Longitude:
- Refers to the longitude direction where the image was taken. (i.e. "E" or "W")
- LongitudeD:
- The longitude in degrees where the image was taken
LongitudeD = LongitudeD[0] / LongitudeD[1] - LongitudeM:
- The longitude in minutes where the image was taken
LongitudeM = LongitudeM[0] / LongitudeM[1] - LongitudeS:
- The longitude in seconds where the image was taken
LongitudeS = LongitudeS[0] / LongitudeS[1] - AltitudeRef:
- The altitude used as the reference altitude. Units are in
meters *2
If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given. - Altitude:
- The altitude in meters where the image was taken
Altitude = Altitude[0] / Altitude[1] - TimeStampH:
- The GPS time stamp in hours *2
GPS hours = TimeStampH[0] / TimeStampH[1] - TimeStampM:
- The GPS time stamp in minutes *2
GPS minutes = TimeStampM[0] / TimeStampM[1] - TimeStampS:
- The GPS time stamp in seconds *2
GPS seconds = TimeStampS[0] / TimeStampS[1] - ProcessingMethod:
- Refers to the name of the method used for location finding. (For example: "CELLID", "WLAN", "GPS", etc.) *2
- ProcessingMethodLen:
- Refers to the length of the string used in ProcessingMethod *2
- ProcessingMethodID:
- Refers to the to the identification code for the processing
method. The identification code for the processing method. This
code is an 8 byte constant with any unused bytes padded with NULL
(0x00) *2
String Code Code Entry Method (8 bytes) Reference ASCII 0x41,0x53,0x43,0x49,0x49,0x00,0x00,0x00 ITU-T T.50 IA5 JIS 0x4A,0x49,0x53,0x00,0x00,0x00,0x00,0x00 JIS X0208-1990 Unicode 0x55,0x4E,0x49,0x43,0x4F,0x44,0x45,0x00 Unicode Standard Undefined 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 Undefined
For hexidecimals in Visual Basic, replace 0x with &H - DateStamp:
- Refers to the GPS date information in the Exif image. The format is "YYYY:MM:DD". *2
*1 The size of these members has changed in the ImageKit8. This
is important to note if converting ImageKit7 programs
*2 These are members newly added in the ImageKit8. This is
important to note if converting ImageKit7 programs
INTOP_TAG: Refers to compatibility information
(1)C++Builder/Visual C++
typedef struct {
char
InteroperabilityIndex[4];
char
InteroperabilityVersion[5];
} INTOP_TAG;
typedef INTOP_TAG *
PTR_INTOP_TAG;
(2)Delphi
type
INTOP_TAG
= Record
InteroperabilityIndex:
array[0..3] of AnsiChar;
InteroperabilityVersion:
array[0..4] of AnsiChar;
end;
(3)Visual Basic
Type INTOP_TAG
InteroperabilityIndex As
String * 4
InteroperabilityVersion As
String * 5
End Type
- InteroperabilityIndex:
- Refers to the identification of the Interoperability rule.
"R98" The R98 file as prescribed by Exif98 or the standard DCF file as prescribed by the Design Rule for Camera File System.
"THM" The standard DCF thumbnail file as prescribed by the Design Rule for Camera File System.
"R03" The standard DCF option file as prescribed by the Design Rule for Camera File System. - InteroperabilityVersion:
- Refers to the interoperability Version (i.e. "0100")
EXIF_INFO: Refers to Exif information (uses
IKJpegExifInfo)
(1)C++Builder/Visual C++
typedef struct {
IMAGE_TAG MainImageInfo;
IMAGE_TAG ThumbImageInfo;
EXIF_TAG ExifInfo;
GPS_TAG GPSInfo;
INTOP_TAG IntOpeInfo;
} EXIF_INFO;
typedef EXIF_INFO *
PTR_EXIF_INFO;
(2)Delphi
type
EXIF_INFO
= Record
MainImageInfo: IMAGE_TAG;
ThumbImageInfo: IMAGE_TAG;
ExifInfo: EXIF_TAG;
GPSInfo: GPS_TAG;
IntOpeInfo: INTOP_TAG;
end;
(3)Visual Basic
Type EXIF_INFO
MainImageInfo As
IMAGE_TAG
ThumbImageInfo As
IMAGE_TAG
ExifInfo As
EXIF_TAG
GPSInfo As
GPS_TAG
IntOpeInfo As
INTOP_TAG
End Type
- MainImageInfo:
- The information about the primary image
- ThumbImageInfo:
- The information about the thumbnail image
- ExifInfo:
- The Exif information
- GPSInfo:
- The GPS information *1
- IntOpeInfo:
- The compatibility information *2
*1 These are members newly added in the ImageKit7. This is
important to note if converting ImageKit6 programs
*2 These are members newly added in the ImageKit8. This is
important to note if converting ImageKit6 or ImageKit7 programs
Definition of the User Function
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