📄 imaging.h
字号:
/**************************************************************************\
*
* Copyright (c) 1999-2000 Microsoft Corporation
*
* Module Name:
*
* imaging.h
*
* Abstract:
*
* Public SDK header file for the imaging library
*
* Notes:
*
* This is hand-coded for now. Eventually it'll be automatically
* generated from an IDL file.
*
* Revision History:
*
* 05/10/1999 davidx
* Created it.
*
\**************************************************************************/
#ifndef _IMAGING_H
#define _IMAGING_H
#include <GdiplusPixelFormats.h>
#include <GdiplusImaging.h>
//
// Imaging library GUIDS:
// image file format identifiers
// interface and class identifers
//
#include <imgguids.h>
// Default bitmap resolution
#define DEFAULT_RESOLUTION 96 // most display screens are set to 96 dpi
// Default thumbnail image size in pixels
#define DEFAULT_THUMBNAIL_SIZE 120
//
// Image Property types
//
#define TAG_TYPE_BYTE 1 // 8-bit unsigned int
#define TAG_TYPE_ASCII 2 // 8-bit byte containing one 7-bit ASCII code.
// NULL terminated.
#define TAG_TYPE_SHORT 3 // 16-bit unsigned int
#define TAG_TYPE_LONG 4 // 32-bit unsigned int
#define TAG_TYPE_RATIONAL 5 // Two LONGs. The first LONG is the numerator,
// the second LONG expresses the denomintor.
#define TAG_TYPE_UNDEFINED 7 // 8-bit byte that can take any value depending
// on field definition
#define TAG_TYPE_SLONG 9 // 32-bit singed integer (2's compliment
// notation)
#define TAG_TYPE_SRATIONAL 10 // Two SLONGs. First is numerator, second is
// denominator.
//
// Image property ID tags (PROPID's from the EXIF tags)
//
#define TAG_EXIF_IFD 0x8769
#define TAG_GPS_IFD 0x8825
#define TAG_NEW_SUBFILE_TYPE 0x00FE
#define TAG_SUBFILE_TYPE 0x00FF
#define TAG_IMAGE_WIDTH 0x0100
#define TAG_IMAGE_HEIGHT 0x0101
#define TAG_BITS_PER_SAMPLE 0x0102
#define TAG_COMPRESSION 0x0103
#define TAG_PHOTOMETRIC_INTERP 0x0106
#define TAG_THRESH_HOLDING 0x0107
#define TAG_CELL_WIDTH 0x0108
#define TAG_CELL_HEIGHT 0x0109
#define TAG_FILL_ORDER 0x010A
#define TAG_DOCUMENT_NAME 0x010D
#define TAG_IMAGE_DESCRIPTION 0x010E
#define TAG_EQUIP_MAKE 0x010F
#define TAG_EQUIP_MODEL 0x0110
#define TAG_STRIP_OFFSETS 0x0111
#define TAG_ORIENTATION 0x0112
#define TAG_SAMPLES_PER_PIXEL 0x0115
#define TAG_ROWS_PER_STRIP 0x0116
#define TAG_STRIP_BYTES_COUNT 0x0117
#define TAG_MIN_SAMPLE_VALUE 0x0118
#define TAG_MAX_SAMPLE_VALUE 0x0119
#define TAG_X_RESOLUTION 0x011A // Image resolution in width direction
#define TAG_Y_RESOLUTION 0x011B // Image resolution in height direction
#define TAG_PLANAR_CONFIG 0x011C // Image data arrangement
#define TAG_PAGE_NAME 0x011D
#define TAG_X_POSITION 0x011E
#define TAG_Y_POSITION 0x011F
#define TAG_FREE_OFFSET 0x0120
#define TAG_FREE_BYTE_COUNTS 0x0121
#define TAG_GRAY_RESPONSE_UNIT 0x0122
#define TAG_GRAY_RESPONSE_CURVE 0x0123
#define TAG_T4_OPTION 0x0124
#define TAG_T6_OPTION 0x0125
#define TAG_RESOLUTION_UNIT 0x0128 // Unit of X and Y resolution
#define TAG_PAGE_NUMBER 0x0129
#define TAG_TRANSFER_FUNCTION 0x012D
#define TAG_SOFTWARE_USED 0x0131
#define TAG_DATE_TIME 0x0132
#define TAG_ARTIST 0x013B
#define TAG_HOST_COMPUTER 0x013C
#define TAG_PREDICTOR 0x013D
#define TAG_WHITE_POINT 0x013E
#define TAG_PRIMAY_CHROMATICS 0x013F
#define TAG_COLOR_MAP 0x0140
#define TAG_HALFTONE_HINTS 0x0141
#define TAG_TILE_WIDTH 0x0142
#define TAG_TILE_LENGTH 0x0143
#define TAG_TILE_OFFSET 0x0144
#define TAG_TILE_BYTE_COUNTS 0x0145
#define TAG_INK_SET 0x014C
#define TAG_INK_NAMES 0x014D
#define TAG_NUMBER_OF_INKS 0x014E
#define TAG_DOT_RANGE 0x0150
#define TAG_TARGET_PRINTER 0x0151
#define TAG_EXTRA_SAMPLES 0x0152
#define TAG_SAMPLE_FORMAT 0x0153
#define TAG_SMIN_SAMPLE_VALUE 0x0154
#define TAG_SMAX_SAMPLE_VALUE 0x0155
#define TAG_TRANSFER_RANGE 0x0156
#define TAG_JPEG_PROC 0x0200
#define TAG_JPEG_INTER_FORMAT 0x0201
#define TAG_JPEG_INTER_LENGTH 0x0202
#define TAG_JPEG_RESTART_INTERVAL 0x0203
#define TAG_JPEG_LOSSLESS_PREDICTORS 0x0205
#define TAG_JPEG_POINT_TRANSFORMS 0x0206
#define TAG_JPEG_Q_TABLES 0x0207
#define TAG_JPEG_DC_TABLES 0x0208
#define TAG_JPEG_AC_TABLES 0x0209
#define TAG_YCbCr_COEFFICIENTS 0x0211
#define TAG_YCbCr_SUBSAMPLING 0x0212
#define TAG_YCbCr_POSITIONING 0x0213
#define TAG_REF_BLACK_WHITE 0x0214
// ICC profile and gamma
#define TAG_ICC_PROFILE 0x8773 // This TAG is defined by ICC
// for embedded ICC in TIFF
#define TAG_GAMMA 0x0301
#define TAG_ICC_PROFILE_DESCRIPTOR 0x0302
#define TAG_SRGB_RENDERING_INTENT 0x0303
#define TAG_IMAGE_TITLE 0x0320
#define TAG_COPYRIGHT 0x8298
// Extra TAGs (Like Adobe Image Information tags etc.)
#define TAG_RESOLUTION_X_UNIT 0x5001
#define TAG_RESOLUTION_Y_UNIT 0x5002
#define TAG_RESOLUTION_X_LENGTH_UNIT 0x5003
#define TAG_RESOLUTION_Y_LENGTH_UNIT 0x5004
#define TAG_PRINT_FLAGS 0x5005
#define TAG_PRINT_FLAGS_VERSION 0x5006
#define TAG_PRINT_FLAGS_CROP 0x5007
#define TAG_PRINT_FLAGS_BLEEDWIDTH 0x5008
#define TAG_PRINT_FLAGS_BLEEDWIDTHSCALE 0x5009
#define TAG_HALFTONE_LPI 0x500A
#define TAG_HALFTONE_LPI_UNIT 0x500B
#define TAG_HALFTONE_DEGREE 0x500C
#define TAG_HALFTONE_SHAPE 0x500D
#define TAG_HALFTONE_MISC 0x500E
#define TAG_HALFTONE_SCREEN 0x500F
#define TAG_JPEG_QUALITY 0x5010
#define TAG_GRID_SIZE 0x5011
#define TAG_THUMBNAIL_FORMAT 0x5012 // 1 = JPEG, 0 = RAW RGB
#define TAG_THUMBNAIL_WIDTH 0x5013
#define TAG_THUMBNAIL_HEIGHT 0x5014
#define TAG_THUMBNAIL_COLORDEPTH 0x5015
#define TAG_THUMBNAIL_PLANES 0x5016
#define TAG_THUMBNAIL_RAWBYTES 0x5017
#define TAG_THUMBNAIL_SIZE 0x5018
#define TAG_THUMBNAIL_COMPRESSED_SIZE 0x5019
#define TAG_COLORTRANSFER_FUNCTION 0x501A
#define TAG_THUMBNAIL_DATA 0x501B // RAW thumbnail bits in JPEG
// format or RGB format depends
// on TAG_THUMBNAIL_FORMAT
// Thumbnail related TAGs
#define TAG_THUMBNAIL_IMAGE_WIDTH 0x5020 // Thumbnail width
#define TAG_THUMBNAIL_IMAGE_HEIGHT 0x5021 // Thumbnail height
#define TAG_THUMBNAIL_BITS_PER_SAMPLE 0x5022 // Number of bits per component
#define TAG_THUMBNAIL_COMPRESSION 0x5023 // Compression Scheme
#define TAG_THUMBNAIL_PHOTOMETRIC_INTERP 0x5024 // Pixel composition
#define TAG_THUMBNAIL_IMAGE_DESCRIPTION 0x5025 // Image Tile
#define TAG_THUMBNAIL_EQUIP_MAKE 0x5026 // Manufacturer of Image Input
// equipment
#define TAG_THUMBNAIL_EQUIP_MODEL 0x5027 // Model of Image input
// equipment
#define TAG_THUMBNAIL_STRIP_OFFSETS 0x5028 // Image data location
#define TAG_THUMBNAIL_ORIENTATION 0x5029 // Orientation of image
#define TAG_THUMBNAIL_SAMPLES_PER_PIXEL 0x502A // Number of components
#define TAG_THUMBNAIL_ROWS_PER_STRIP 0x502B // Number of rows per strip
#define TAG_THUMBNAIL_STRIP_BYTES_COUNT 0x502C // Bytes per compressed strip
#define TAG_THUMBNAIL_RESOLUTION_X 0x502D // Resolution in width direction
#define TAG_THUMBNAIL_RESOLUTION_Y 0x502E // Resolution in height direc
#define TAG_THUMBNAIL_PLANAR_CONFIG 0x502F // Image data arrangement
#define TAG_THUMBNAIL_RESOLUTION_UNIT 0x5030 // Unit of X and Y Resolution
#define TAG_THUMBNAIL_TRANSFER_FUNCTION 0x5031 // Transfer function
#define TAG_THUMBNAIL_SOFTWARE_USED 0x5032 // Software used
#define TAG_THUMBNAIL_DATE_TIME 0x5033 // File change date and time
#define TAG_THUMBNAIL_ARTIST 0x5034 // Person who created the image
#define TAG_THUMBNAIL_WHITE_POINT 0x5035 // White point chromaticity
#define TAG_THUMBNAIL_PRIMAY_CHROMATICS 0x5036 // Chromaticities of primaries
#define TAG_THUMBNAIL_YCbCr_COEFFICIENTS 0x5037 // Color space transformation
// coefficients
#define TAG_THUMBNAIL_YCbCr_SUBSAMPLING 0x5038 // Subsampling ratio of Y to C
#define TAG_THUMBNAIL_YCbCr_POSITIONING 0x5039 // Y and C position
#define TAG_THUMBNAIL_REF_BLACK_WHITE 0x503A // Pair of black and white
// reference values
#define TAG_THUMBNAIL_COPYRIGHT 0x503B // CopyRight holder
// Special JPEG internal values
#define TAG_LUMINANCE_TABLE 0x5090
#define TAG_CHROMINANCE_TABLE 0x5091
// GIF image
#define TAG_FRAMEDELAY 0x5100
#define TAG_LOOPCOUNT 0x5101
// PNG Image
#define TAG_PIXEL_UNIT 0x5110 // Unit specifier for pixel/unit
#define TAG_PIXEL_PER_UNIT_X 0x5111 // Pixels per unit in X
#define TAG_PIXEL_PER_UNIT_Y 0x5112 // Pixels per unit in Y
#define TAG_PALETTE_HISTOGRAM 0x5113 // Palette histogram
// EXIF specific tag
#define EXIF_TAG_EXPOSURE_TIME 0x829A
#define EXIF_TAG_F_NUMBER 0x829D
#define EXIF_TAG_EXPOSURE_PROG 0x8822
#define EXIF_TAG_SPECTRAL_SENSE 0x8824
#define EXIF_TAG_ISO_SPEED 0x8827
#define EXIF_TAG_OECF 0x8828
#define EXIF_TAG_VER 0x9000
#define EXIF_TAG_D_T_ORIG 0x9003 // Date & time of original
#define EXIF_TAG_D_T_DIGITIZED 0x9004 // Date & time of digital data generation
#define EXIF_TAG_COMP_CONFIG 0x9101
#define EXIF_TAG_COMP_BPP 0x9102
#define EXIF_TAG_SHUTTER_SPEED 0x9201
#define EXIF_TAG_APERATURE 0x9202
#define EXIF_TAG_BRIGHTNESS 0x9203
#define EXIF_TAG_EXPOSURE_BIAS 0x9204
#define EXIF_TAG_MAX_APERATURE 0x9205
#define EXIF_TAG_SUBJECT_DIST 0x9206
#define EXIF_TAG_METERING_MODE 0x9207
#define EXIF_TAG_LIGHT_SOURCE 0x9208
#define EXIF_TAG_FLASH 0x9209
#define EXIF_TAG_FOCAL_LENGTH 0x920A
#define EXIF_TAG_MAKER_NOTE 0x927C
#define EXIF_TAG_USER_COMMENT 0x9286
#define EXIF_TAG_D_T_SUBSEC 0x9290 // Date & Time subseconds
#define EXIF_TAG_D_T_ORIG_SS 0x9291 // Date & Time original subseconds
#define EXIF_TAG_D_T_DIG_SS 0x9292 // Date & TIme digitized subseconds
#define EXIF_TAG_FPX_VER 0xA000
#define EXIF_TAG_COLOR_SPACE 0xA001
#define EXIF_TAG_PIX_X_DIM 0xA002
#define EXIF_TAG_PIX_Y_DIM 0xA003
#define EXIF_TAG_RELATED_WAV 0xA004 // related sound file
#define EXIF_TAG_INTEROP 0xA005
#define EXIF_TAG_FLASH_ENERGY 0xA20B
#define EXIF_TAG_SPATIAL_FR 0xA20C // Spatial Frequency Response
#define EXIF_TAG_FOCAL_X_RES 0xA20E // Focal Plane X Resolution
#define EXIF_TAG_FOCAL_Y_RES 0xA20F // Focal Plane Y Resolution
#define EXIF_TAG_FOCAL_RES_UNIT 0xA210 // Focal Plane Resolution Unit
#define EXIF_TAG_SUBJECT_LOC 0xA214
#define EXIF_TAG_EXPOSURE_INDEX 0xA215
#define EXIF_TAG_SENSING_METHOD 0xA217
#define EXIF_TAG_FILE_SOURCE 0xA300
#define EXIF_TAG_SCENE_TYPE 0xA301
#define EXIF_TAG_CFA_PATTERN 0xA302
#define GPS_TAG_VER 0x0000
#define GPS_TAG_LATTITUDE_REF 0x0001
#define GPS_TAG_LATTITUDE 0x0002
#define GPS_TAG_LONGITUDE_REF 0x0003
#define GPS_TAG_LONGITUDE 0x0004
#define GPS_TAG_ALTITUDE_REF 0x0005
#define GPS_TAG_ALTITUDE 0x0006
#define GPS_TAG_GPS_TIME 0x0007
#define GPS_TAG_GPS_SATELLITES 0x0008
#define GPS_TAG_GPS_STATUS 0x0009
#define GPS_TAG_GPS_MEASURE_MODE 0x00A
#define GPS_TAG_GPS_DOP 0x000B // Measurement precision
#define GPS_TAG_SPEED_REF 0x000C
#define GPS_TAG_SPEED 0x000D
#define GPS_TAG_TRACK_REF 0x000E
#define GPS_TAG_TRACK 0x000F
#define GPS_TAG_IMG_DIR_REF 0x0010
#define GPS_TAG_IMG_DIR 0x0011
#define GPS_TAG_MAP_DATUM 0x0012
#define GPS_TAG_DEST_LAT_REF 0x0013
#define GPS_TAG_DEST_LAT 0x0014
#define GPS_TAG_DEST_LONG_REF 0x0015
#define GPS_TAG_DEST_LONG 0x0016
#define GPS_TAG_DEST_BEAR_REF 0x0017
#define GPS_TAG_DEST_BEAR 0x0018
#define GPS_TAG_DEST_DIST_REF 0x0019
#define GPS_TAG_DEST_DIST 0x001A
#define MAKEARGB(a, r, g, b) \
(((ARGB) ((a) & 0xff) << ALPHA_SHIFT) | \
((ARGB) ((r) & 0xff) << RED_SHIFT) | \
((ARGB) ((g) & 0xff) << GREEN_SHIFT) | \
((ARGB) ((b) & 0xff) << BLUE_SHIFT))
typedef PixelFormat PixelFormatID;
// Map COM Flags to GDI+ Flags
#define PIXFMTFLAG_INDEXED PixelFormatIndexed
#define PIXFMTFLAG_GDI PixelFormatGDI
#define PIXFMTFLAG_ALPHA PixelFormatAlpha
#define PIXFMTFLAG_PALPHA PixelFormatPAlpha
#define PIXFMTFLAG_EXTENDED PixelFormatExtended
#define PIXFMTFLAG_CANONICAL PixelFormatCanonical
#define PIXFMT_UNDEFINED PixelFormatUndefined
#define PIXFMT_DONTCARE PixelFormatDontCare
#define PIXFMT_1BPP_INDEXED PixelFormat1bppIndexed
#define PIXFMT_4BPP_INDEXED PixelFormat4bppIndexed
#define PIXFMT_8BPP_INDEXED PixelFormat8bppIndexed
#define PIXFMT_16BPP_RGB555 PixelFormat16bppRGB555
#define PIXFMT_16BPP_RGB565 PixelFormat16bppRGB565
#define PIXFMT_16BPP_ARGB1555 PixelFormat16bppARGB1555
#define PIXFMT_24BPP_RGB PixelFormat24bppRGB
#define PIXFMT_32BPP_RGB PixelFormat32bppRGB
#define PIXFMT_32BPP_ARGB PixelFormat32bppARGB
#define PIXFMT_32BPP_PARGB PixelFormat32bppPARGB
#define PIXFMT_48BPP_RGB PixelFormat48bppRGB
#define PIXFMT_64BPP_ARGB PixelFormat64bppARGB
#define PIXFMT_64BPP_PARGB PixelFormat64bppPARGB
#define PIXFMT_24BPP_BGR (15 | (24 << 8) | PixelFormatGDI)
#define PIXFMT_MAX PixelFormatMax + 1
#define PALFLAG_HASALPHA PaletteFlagsHasAlpha
#define PALFLAG_GRAYSCALE PaletteFlagsGrayScale
#define PALFLAG_HALFTONE PaletteFlagsHalftone
#define IMGLOCK_READ ImageLockModeRead
#define IMGLOCK_WRITE ImageLockModeWrite
#define IMGLOCK_USERINPUTBUF ImageLockModeUserInputBuf
#define IMGFLAG_NONE ImageFlagsNone
#define IMGFLAG_SCALABLE ImageFlagsScalable
#define IMGFLAG_HASALPHA ImageFlagsHasAlpha
#define IMGFLAG_HASTRANSLUCENT ImageFlagsHasTranslucent
#define IMGFLAG_PARTIALLY_SCALABLE ImageFlagsPartiallyScalable
#define IMGFLAG_COLORSPACE_RGB ImageFlagsColorSpaceRGB
#define IMGFLAG_COLORSPACE_CMYK ImageFlagsColorSpaceCMYK
#define IMGFLAG_COLORSPACE_GRAY ImageFlagsColorSpaceGRAY
#define IMGFLAG_COLORSPACE_YCBCR ImageFlagsColorSpaceYCBCR
#define IMGFLAG_COLORSPACE_YCCK ImageFlagsColorSpaceYCCK
#define IMGFLAG_HASREALDPI ImageFlagsHasRealDPI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -