
ASP > Thumbnail > 11. 4. ¸Þ¼Òµå ¸ðÀ½.
¾Æ·¡ÀÇ ³»¿ëÀº CxImageATL ¸Þ´º¾ó ÀÔ´Ï´Ù.
¿ø Á¦ÀÛÀÚ ¼Ò½º´Â http://www.aoi.it ½ÎÀÌÆ®¿¡¼ ´Ù¿î¹ÞÀ»¼ö ÀÖ½À´Ï´Ù.
CxImage(DWORD imagetype=0) | Creates an empty image. imagetype (optional) sets the image format. | CxImage(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype=0) | Creates an image with the specified width, height, bit per pixel and (optional) image type arguments. | CxImage(const CxImage &isrc, bool copypixels=true, bool copyselection=true, bool copyalpha=true) | Creates an image with the same characteristics of the source image. | CxImage(const char * filename, DWORD imagetype) CxImage(FILE * stream, DWORD imagetype) CxImage(CxFile * stream, DWORD imagetype) CxImage(BYTE * buffer, DWORD size, DWORD imagetype)
| Creates an image from file or memory. imagetype can be one of these formats:
CXIMAGE_FORMAT_JPG, CXIMAGE_FORMAT_TIF, CXIMAGE_FORMAT_MNG, CXIMAGE_FORMAT_BMP, CXIMAGE_FORMAT_ICO, CXIMAGE_FORMAT_GIF, CXIMAGE_FORMAT_PNG, CXIMAGE_FORMAT_PCX, CXIMAGE_FORMAT_TGA, CXIMAGE_FORMAT_WMF, CXIMAGE_FORMAT_JBG, CXIMAGE_FORMAT_J2K, CXIMAGE_FORMAT_JP2, CXIMAGE_FORMAT_JPC, CXIMAGE_FORMAT_PGX, CXIMAGE_FORMAT_PNM, CXIMAGE_FORMAT_RAS, CXIMAGE_FORMAT_WBMP For automatic image type detection use CXIMAGE_FORMAT_UNKNOWN |
Initialization
void* Create(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype=0) | Initializes or rebuilds the image. Returns the pointer to the internal pDib object. | void Clear(BYTE bval=0) | Sets the image bits to the specified value. | void Destroy() | Releases the image buffers. | void Copy(const CxImage &src, bool copypixels = true, bool copyselection = true, bool copyalpha = true) | Copies the image from an exsisting one. | HANDLE CopyToHandle() | Copies the image to a global memory handle (clipboard operations) | void CreateFromHBITMAP(HBITMAP hbmp) void CreateFromHICON(HICON hico) | Creates an image from a bitmap or icon object. (resource) | bool CreateFromHANDLE(HANDLE hMem) | Creates an image from a global bitmap handle. (clipboard operations) | bool CreateFromARGB(DWORD dwWidth,DWORD dwHeight,BYTE* argbArray) | Creates an image from an ARGB buffer. | void Transfer(CxImage &from) | Transfers the image from an existing source image. The source become empty. |
File operations
bool LoadResource(HRSRC hRes, DWORD imagetype, HMODULE hModule=NULL) | Loads an image from the application resources.
hRes is the resource handle returned by FindResource() . | bool Save(const char * filename,DWORD imagetype=0)
bool Save(LPCWSTR filename, DWORD imagetype=0)
bool Encode(FILE * hFile, DWORD imagetype)
bool Encode(CxFile * hFile, DWORD imagetype)
bool Encode(BYTE * &buffer, long &size, DWORD imagetype)
| Saves to disk or memory the image in a specific format. (Note: buffer must be NULL, the function allocates and fill the memory, the application must free the buffer) | bool Load(const char * filename,DWORD imagetype=0)
bool Load(LPCWSTR filename, DWORD imagetype=0)
bool Decode(FILE * hFile, DWORD imagetype)
bool Decode(CxFile * hFile, DWORD imagetype)
bool Decode(BYTE * buffer, DWORD size, DWORD imagetype)
| Reads from disk or memory the image in a specific format. | bool Encode(CxFile * hFile, CxImage ** pImages, int pagecount, DWORD imagetype); bool Encode(FILE *hFile, CxImage ** pImages, int pagecount, DWORD imagetype); | Saves to disk or memory pagecount images, referenced by an array of CxImage pointers. imagetype can be CXIMAGE_FORMAT_TIF or CXIMAGE_FORMAT_GIF |
Image operations
bool IsValid() | Checks if the image is correctly initializated. | bool IsEnabled() | True if the image is enabled for painting. | void Enable(bool enable=true) | Enables/disables the image. | bool Flip() | Flips upside down the image. | bool Mirror() | Mirrors the image. | bool Rotate(float angle, CxImage* iDst = NULL) bool RotateLeft(CxImage* iDst = NULL) bool RotateRight(CxImage* iDst = NULL) bool Rotate180(CxImage* iDst = NULL) | Rotates the image. angle can be positive for clockwise rotation or negative for counter-clockwise rotation. If iDst is NULL, the resulting image replaces the original. | bool Negative() | Inverts the image colors. | bool GrayScale() | Converts the image colors to 8 bit gray scale. | bool Resample(long newx, long newy, int mode = 1, CxImage* iDst = NULL)
| Resizes the image. mode can be 0 for slow (bilinear) method , 1 for fast (nearest pixel) method, or 2 for accurate (bicubic spline interpolation) method. The function is faster with 24 and 1 bpp images, slow for 4 bpp images and slowest for 8 bpp images. | bool DecreaseBpp(DWORD nbit, bool errordiffusion, RGBQUAD* ppal = 0) | Reduces the number of bits per pixel to nbit (1, 4 or 8).
ppal points to a valid palette for the final image; if not supplied the function will use a standard palette. ppal is not necessary for reduction to 1 bpp. | bool IncreaseBpp(DWORD nbit) | Increases the number of bits per pixel of the image. | bool Dither(long method = 0) | Converts the image to B&W using the Floyd-Steinberg (method = 0) or Ordered-Dithering (method = 1) algorithms. | bool Crop(long left, long top, long right, long bottom, CxImage* iDst = NULL) bool Crop(const RECT& rect, CxImage* iDst = NULL) | Extracts the specified rectangle from the image. If iDst is NULL, the resulting image replaces the original. |
DSP operations
bool Threshold(BYTE level) | Converts the image to B&W. level is the lightness threshold. The Mean() function can be used for calculating the optimal threshold. | bool SplitRGB(CxImage* r,CxImage* g,CxImage* b) bool SplitYUV(CxImage* y,CxImage* u,CxImage* v) bool SplitHSL(CxImage* h,CxImage* s,CxImage* l) bool SplitYIQ(CxImage* y,CxImage* i,CxImage* q) bool SplitXYZ(CxImage* x,CxImage* y,CxImage* z) bool SplitCMYK(CxImage* c,CxImage* m,CxImage* y,CxImage* k) | Extract various channels from the image. Each channel is an 8 bit grayscale image. | bool Colorize(BYTE hue, BYTE sat) | Replaces the original hue and saturation values with hue and sat . | bool Light(long brightness, long contrast=0) | Changes the brightness and the contrast of the image. level can be from -255 to 255, if level is negative, the image becomes dark. contrast can be from -100 to 100, the neutral value is 0. | float Mean() | Returns the mean lightness of the image. Useful with Threshold and Light | bool Erode(long Ksize=2) | Enhance the dark areas of the image. Ksize is the size of the kernel. | bool Dilate(long Ksize=2) | Enhance the light areas of the image. Ksize is the size of the kernel. | bool Filter(long* kernel, long Ksize, long Kfactor, long Koffset) | 2D linear filter. kernel is the convolving matrix, in row format; Ksize is the size of the kernel. Kfactor is the normalization constant; Koffset is the bias. Example: the "soften" filter uses this kernel: 1 1 1 1 8 1 1 1 1 the function needs: kernel ={1,1,1,1,8,1,1,1,1}; Ksize =3; Kfactor =16; Koffset =0; | void Mix(CxImage & imgsrc2, ImageOpType op, long lXOffset = 0, long lYOffset = 0) | Blends two images. op can be : OpAdd, OpAnd, OpXor, OpOr, OpMask, OpSrcCopy, OpDstCopy, OpSub, OpSrcBlend | bool ShiftRGB(long r, long g, long b) | Adjusts separately the red, green, and blue values in the image. | bool Gamma(float gamma) | Adjusts the color balance of the image. gamma can be from 0.1 to 5. | bool Median(long Ksize = 3) | Adjusts the intensity of each pixel to the median intensity of its surrounding pixels. | bool Noise(long level) | Adds an uniform noise to the image, level can be from 0 to 255. | bool Skew(float xgain, float ygain, long xpivot, long ypivot) | image skewing, xgain and ygain can be from 0 to 1, xpivot and ypivot is the center of the transformation. | bool Jitter(long radius = 2) | Adds a random offset to each pixel in the image | long Histogram(long* red, long* green = 0, long* blue = 0, long* gray = 0, long colorspace = 0) | Build the istogram of the image. red , green , blue , gray are long[256] or NULL. colorspace can be: 0 = RGB, 1 = HSL, 2 = YUV, 3 = YIQ, 4 = XYZ. The function returns the maximum value stored in the red , green , blue , gray buffers. | HistogramStretch(); HistogramEqualize(); HistogramNormalize(); HistogramRoot(); HistogramLog(); | Histogram functions. | bool FFT2(CxImage* srcReal, CxImage* srcImag, CxImage* dstReal, CxImage* dstImag, long direction = 1, bool bForceFFT = true, bool bMagnitude = true) | Computes the bidimensional FFT or DFT of the image. If the dimensions of the image are a power of, 2 the FFT is performed automatically. If dstReal and/or dstImag are NULL, the resulting images replaces the original(s).
direction : 1 = forward, -1 = inverse.
bForceFFT : Resample the image to make the dimensions a power of 2.
bMagnitude : the real part returns the magnitude, the imaginary part returns the phase. Note: with 8 bits there is a HUGE loss in the dynamics the function tries to keep an acceptable SNR, but 8bit = 48dB... | bool Combine(CxImage* r,CxImage* g,CxImage* b,CxImage* a, long colorspace = 0) | Combines different color components, "a" can be NULL, the source colorspace can be: 0 = RGB, 1 = HSL, 2 = YUV, 3 = YIQ, 4 = XYZ | bool Repair(float radius = 0.25f, long niterations = 1, long colorspace = 0) | Smart blurring to remove small defects, dithering or artifacts. |
Painting operations
long Draw(HDC pDC, long xoffset, long yoffset, long xsize = -1, long size = -1, RECT* pClipRect = 0)
long Draw(HDC hdc, const RECT& rect, RECT* pClipRect = 0) | Draws the image in the specified device context, with support for alpha channel, alpha palette, transparency, opacity. | long Draw2(HDC pDC, long xoffset, long yoffset, long xsize = -1, long size = -1)
long Draw2(HDC hdc, const RECT& rect) | Draws the image in the specified device context, using the "true mask" method (simple transparency) | long Stretch(HDC pDC,long xoffset,long yoffset,long xsize,long ysize)
long Stretch(HDC hdc, const RECT& rect) | Stretch the image (obsolete, use Draw), still useful for printing operations. | long Tile(HDC pDC, RECT *rc) | Tiles the image to fill the specified rectangle. | long DrawText(HDC hdc, long x, long y, const char* text, RGBQUAD color, const char* font, long lSize=0, long lWeight=400, BYTE bItalic=0, BYTE bUnderline=0) | Draws a string in the image. | long Blt(HDC pDC, long x=0, long y=0) | Only for WinCE. |
Multiple Images operations
These are specific function to load multiple TIFF, GIF and ICON images.
long GetNumFrames() | Returns the number of images in the file. This function must be used after a ReadFile() call. Use the sequence SetFrame(-1); ReadFile(...); GetNumFrames(); to get the number of images without loading the first image. | long GetFrame() | Returns the current selected image (zero-based index). | long SetFrame() | Set the image number that the next ReadFile() call will load. |
Transparency
long GetTransIndex() | Gets the index used for transparency. Returns -1 for no transparancy. | RGBQUAD GetTransColor() | Gets the color used for transparency. | void SetTransIndex(long idx) | Sets the index used for transparency with 1, 4 and 8 bpp images. Set to -1 to remove the effect. | void SetTransColor(RGBQUAD rgb) | Sets the color used for transparency with 24 bpp images. You must call SetTransIndex(0) to enable the effect, SetTransIndex(-1) to disable it. | bool IsTransparent() | |
Palette operations
These functions have no effects on RGB images and in this case the returned
value is always 0.
DWORD GetPaletteSize() | Returns the palette dimension in bytes. | RGBQUAD* GetPalette() | Returns the pointer to the first palette index. | RGBQUAD GetPaletteColor(BYTE idx) bool GetPaletteColor(int i, BYTE* r, BYTE* g, BYTE* b) | Returns the color of the specified index. | BYTE GetNearestIndex(RGBQUAD c) | Returns the best palette index that matches a specified color . | void SetPalette(DWORD n, BYTE *r, BYTE *g, BYTE *b)
void SetPalette(RGBQUAD* pPal,DWORD nColors=256)
void SetPalette(rgb_color_struct *rgb,DWORD nColors=256) | Sets the palette entries. | void SetPaletteColor(BYTE idx, BYTE r, BYTE g, BYTE b)
void SetPaletteColor(BYTE idx, RGBQUAD c)
void SetPaletteColor(BYTE idx, COLORREF cr) | Sets the color of the specified palette index. | void SetGrayPalette() | Turns to gray scale palette. | void BlendPalette(COLORREF cr,long perc) | Colorize the palette. | bool IsGrayScale() | Returns true if the image has 256 colors and a linear grey scale palette. | bool IsIndexed() | Returns true if the image has 256 colors or less. | void SwapIndex(BYTE idx1, BYTE idx2) | Swaps two indexes in the image and their colors in the palette. | void SetStdPalette() | Sets a palette with standard colors for 4 and 8 bpp images. | void HuePalette(float correction=1) | Generates a "rainbow" palette with saturated colors. correction=1 generates a single hue spectrum. correction=0.75 is nice for scientific applications. | RGBQUAD HSLtoRGB(COLORREF cHSLColor)
RGBQUAD RGBtoRGBQUAD(COLORREF cr)
COLORREF RGBQUADtoRGB (RGBQUAD c)
RGBQUAD RGBtoHSL(RGBQUAD lRGBColor)
RGBQUAD HSLtoRGB(RGBQUAD lHSLColor) RGBQUAD YUVtoRGB(RGBQUAD lYUVColor) RGBQUAD RGBtoYUV(RGBQUAD lRGBColor) RGBQUAD YIQtoRGB(RGBQUAD lYIQColor); RGBQUAD RGBtoYIQ(RGBQUAD lRGBColor); RGBQUAD XYZtoRGB(RGBQUAD lXYZColor); RGBQUAD RGBtoXYZ(RGBQUAD lRGBColor); RGBtoBGR(BYTE *buffer, int length); RGB2GRAY(r,g,b)
| Color transformation utilities. |
Pixels operations
bool IsInside(long x, long y) | Checks if the coordinates are inside the image. | BYTE GetPixelIndex(long x,long y) | Returns the pixel index (0 for RGB images). | RGBQUAD GetPixelColor(long x,long y) | Returns the pixel color. | BYTE GetPixelGray(long x,long y) | Returns the pixel lightness | void SetPixelIndex(long x,long y,BYTE i) | Sets the pixel index, only for indexed images. | void SetPixelColor(long x,long y,RGBQUAD c, bool bEditAlpha = false)
void SetPixelColor(long x,long y,COLORREF cr) | Sets the pixel color. |
Region selection
bool SelectionCreate() | Allocates an empty selection. | bool SelectionDelete() | Deallocates the selction. | bool SelectionClear() | Empties the selection. | bool SelectionCopy(CxImage &from) | Imports an existing region from another image with the same width and height. | bool SelectionInvert() | Inverts the selection. | bool SelectionAddRect(RECT r) | Adds a rectangle to the existing selection. | bool SelectionAddEllipse(RECT r) | Adds an ellipse to the existing selection. | bool SelectionAddPolygon(POINT *points, long npoints) | Adds a polygonal region to the existing selection. points points to an array of POINT structures. Each structure specifies the x-coordinate and y-coordinate of one vertex of the polygon. npoints specifies the number of POINT structures in the array pointed to by points . | void SelectionGetBox(RECT& r) | Gets the smallest rectangle that contains the selection | bool SelectionIsInside(long x, long y) | Checks if the coordinates are inside the selection. | bool SelectionAddColor(RGBQUAD c) | Adds to the selection all the pixels matching the specified color. | bool SelectionToHRGN(HRGN& region) | Converts the selection in a HRGN object. | bool SelectionIsValid() | Checks if the image has a valid selection. |
Alpha channel
void AlphaCreate() | Allocates an empty (transparent) alpha channel. | void AlphaDelete() | Deallocates the alpha channel. | void AlphaClear() | Resets the alpha channel. | void AlphaInvert() | Inverts the alpha channel. | bool AlphaMirror() | Mirrors the alpha channel. | bool AlphaFlip() | Flips the alpha channel. | bool AlphaCopy(CxImage &from) | Imports an existing alpa channel from another image with the same width and height. | void AlphaStrip() | Blends the alpha channel and the alpha palette with the pixels. The result is a 24 bit image. The background color can be selected using SetTransColor (). | bool AlphaSplit(CxImage *dest) | Exports the alpha channel in a 8bpp grayscale image. | void AlphaSet(BYTE level) void AlphaSet(long x,long y,BYTE level) | Sets the alpha level for the whole image or for a single pixel | void AlphaSet(CxImage &from) | Creates the alpha channel from a gray scale image | BYTE AlphaGet(long x,long y) | Returns the alpha level for the specified pixel. | BYTE AlphaGetMax() / void AlphaSetMax(BYTE nAlphaMax) | Get/Set global Alpha (opacity) value applied to the whole image. | bool AlphaIsValid() | Checks if the image has a valid alpha channel. | void AlphaPaletteClear() | Resets the alpha palette. | void AlphaPaletteEnable(bool enable=true) | Enables the alpha palette, so the Draw() function changes its behavior. | bool AlphaPaletteIsEnabled() | True if the alpha palette is enabled for painting. | bool AlphaPaletteSplit(CxImage *dest) | Exports the alpha channel in a 8bpp grayscale image. | bool AlphaPaletteIsValid() | Checks if the image has a valid alpha palette. |
Layers
bool LayerCreate(long position = -1) | Creates an empty layer. If position is less than 0, the new layer will be placed in the last position | bool LayerDelete(long position = -1) | Deletes a layer. If position is less than 0, the last layer will be deleted | void LayerDeleteAll() | | CxImage* GetLayer(long position) | Returns a pointer to a layer. If position is less than 0, the last layer will be returned | CxImage* GetParent() | If the object is an internal layer, GetParent return its parent in the hierarchy. | long GetNumLayers() | Number of layers allocated directly by the object. |
Attributes
long GetSize() | Returns the size in byte of the internal hDib object. | BYTE* GetBits() | Returns the pointer to the image pixels (USE CAREFULLY). | DWORD GetHeight() | | DWORD GetWidth() | | DWORD GetEffWidth() | Returns the DWORD aligned width of the image. | DWORD GetNumColors() | Returns 2, 16, 256; 0 for RGB images. | BYTE GetColorType() | Returns: 1=Palette, 2=RGB, 4=Alpha. | WORD GetBpp() | Returns: 1, 4, 8, 24. | DWORD GetType() | Returns the file extension associated with the image. | LPSTR GetLastError() | Returns the last reported error. | void* GetDIB() | Returns the internal hDib object. | BYTE GetJpegQuality() / void SetJpegQuality(BYTE q) | Image quality for JPEG and TIFF formats. | long GetXDPI() / void SetXDPI(long dpi) long GetYDPI() / void SetYDPI(long dpi) | Resolution for TIFF, JPEG, PNG and BMP formats. | DWORD GetEncodeOption() void SetEncodeOption(DWORD opt) | Encode option for GIF and TIF GIF : 0 = RLE (default), 1 = none, 2 = LZW. TIF : 0 = automatic (default), or a valid compression code as defined in "tiff.h" (COMPRESSION_NONE = 1, COMPRESSION_CCITTRLE = 2, ...) | DWORD GetFlags() SetFlags(DWORD flags, bool bLockReservedFlags = true) | Image flags, for future use 0x??00000 = reserved for 16 bit, CMYK, multilayer 0x00??0000 = blend modes 0x0000???? = layer id or user flags
bLockReservedFlags protects the "reserved" and "blend modes" flags | void GetOffset(long *x,long *y) void SetOffset(long x,long y) | Image offset. |
Miscellaneous
HBITMAP MakeBitmap(HDC hdc)
| Creates a device-dependent bitmap (DDB) from the image (DIB). If hdc is NULL, the function returns a DIB. | long GetProgress() | Used to monitor the slow loops. The returned value is from 0 to 100. | long GetEscape() | Returns the escape code. | void SetProgress(long p) | Forces the value of the internal progress variable. | void SetEscape(long i) | Used to quit the slow loops or the codecs. | const char* GetVersion() | |
|