Malvar-He-Cutler Linear Image Demosaicking
|
Implements ReadImage and WriteImage functions. More...
Go to the source code of this file.
Defines | |
#define | MAX_IMAGE_SIZE 10000 |
Limit on the maximum allowed image width or height (security). | |
#define | SUPPORTEDSTRING_JPEG "" |
#define | SUPPORTEDSTRING_PNG "" |
#define | SUPPORTEDSTRING_TIFF "" |
#define | READIMAGE_FORMATS_SUPPORTED "BMP" SUPPORTEDSTRING_JPEG SUPPORTEDSTRING_PNG SUPPORTEDSTRING_TIFF |
#define | WRITEIMAGE_FORMATS_SUPPORTED "BMP" SUPPORTEDSTRING_JPEG SUPPORTEDSTRING_PNG SUPPORTEDSTRING_TIFF |
#define | IMAGEIO_U8 0x0000 |
#define | IMAGEIO_SINGLE 0x0001 |
#define | IMAGEIO_FLOAT IMAGEIO_SINGLE |
#define | IMAGEIO_DOUBLE 0x0002 |
#define | IMAGEIO_STRIP_ALPHA 0x0010 |
#define | IMAGEIO_BGRFLIP 0x0020 |
#define | IMAGEIO_AFLIP 0x0040 |
#define | IMAGEIO_GRAYSCALE 0x0080 |
#define | IMAGEIO_PLANAR 0x0100 |
#define | IMAGEIO_COLUMNMAJOR 0x0200 |
#define | IMAGEIO_RGB (IMAGEIO_STRIP_ALPHA) |
#define | IMAGEIO_BGR (IMAGEIO_STRIP_ALPHA | IMAGEIO_BGRFLIP) |
#define | IMAGEIO_RGBA 0x0000 |
#define | IMAGEIO_BGRA (IMAGEIO_BGRFLIP) |
#define | IMAGEIO_ARGB (IMAGEIO_AFLIP) |
#define | IMAGEIO_ABGR (IMAGEIO_BGRFLIP | IMAGEIO_AFLIP) |
#define | _CRT_SECURE_NO_WARNINGS |
Avoid MSVC warnings on using fopen. | |
Functions | |
int | IdentifyImageType (char *Type, const char *FileName) |
Identify the file type of an image file by its magic numbers. | |
void * | ReadImage (int *Width, int *Height, const char *FileName, unsigned Format) |
Read an image file as 32-bit RGBA data. | |
int | WriteImage (void *Image, int Width, int Height, const char *FileName, unsigned Format, int Quality) |
Write an image file from 8-bit RGBA image data. |
Implements ReadImage and WriteImage functions.
Copyright (c) 2010-2011, Pascal Getreuer All rights reserved.
This program is free software: you can use, modify and/or redistribute it under the terms of the simplified BSD License. You should have received a copy of this license along this program. If not, see <http://www.opensource.org/licenses/bsd-license.html>.
Definition in file imageio.h.
#define _CRT_SECURE_NO_WARNINGS |
#define IMAGEIO_BGR (IMAGEIO_STRIP_ALPHA | IMAGEIO_BGRFLIP) |
#define MAX_IMAGE_SIZE 10000 |
#define READIMAGE_FORMATS_SUPPORTED "BMP" SUPPORTEDSTRING_JPEG SUPPORTEDSTRING_PNG SUPPORTEDSTRING_TIFF |
String macro listing supported formats for ReadImage
. For example,
printf("Supported formats for reading: " READIMAGE_FORMATS_SUPPORTED ".\n");
#define WRITEIMAGE_FORMATS_SUPPORTED "BMP" SUPPORTEDSTRING_JPEG SUPPORTEDSTRING_PNG SUPPORTEDSTRING_TIFF |
int IdentifyImageType | ( | char * | Type, |
const char * | FileName | ||
) |
Identify the file type of an image file by its magic numbers.
Type | destination buffer with space for at least 5 chars |
FileName | image file name |
The routine fills Type with an identifying string. If there is an error or the file type is unknown, Type is set to a null string.
Definition at line 1842 of file imageio.c.
void* ReadImage | ( | int * | Width, |
int * | Height, | ||
const char * | FileName, | ||
unsigned | Format | ||
) |
Read an image file as 32-bit RGBA data.
Width,Height | pointers to be filled with the image dimensions |
FileName | image file name |
Format | specifies the desired format for the image |
The calling syntax is that the filename is the input and Width
, and Height
and the returned pointer are outputs. ReadImage
allocates memory for the image as one contiguous block of memory and returns a pointer. It is the responsibility of the caller to call Free
on this pointer when done to release this memory.
A non-null pointer indicates success. On failure, the returned pointer is null, and Width
and Height
are set to 0.
The Format argument is used by specifying one of the data type options
and one of the channel options
and optionally either or both of the ordering options
uint32_t *Image; int Width, Height; if(!(Image = (uint32_t *)ReadImage(&Width, &Height, "myimage.bmp", IMAGEIO_U8 | IMAGEIO_RGBA))) return 0; printf("Read image of size %dx%d\n", Width, Height); ... Free(Image);
With the default formatting IMAGEIO_U8 | IMAGEIO_RGBA, the image is organized in standard row major top-down 32-bit RGBA order. The image is organized as
(Top left) (Top right) Image[0] Image[1] ... Image[Width-1] Image[Width] Image[Width+1] ... Image[2*Width] ... ... ... ... Image[Width*(Height-1)] ... ... Image[Width*Height-1] (Bottom left) (Bottom right)
Each element Image
[k] represents one RGBA pixel, which is a 32-bit bitfield. The components of pixel Image
[k] can be unpacked as
uint8_t *Component = (uint8_t *)&Image[k]; uint8_t Red = Component[0]; uint8_t Green = Component[1]; uint8_t Blue = Component[2]; uint8_t Alpha = Component[3];
Each component is an unsigned 8-bit integer value with range 0-255. Most images do not have alpha information, in which case the alpha component is set to value 255 (full opacity).
With IMAGEIO_SINGLE or IMAGEIO_DOUBLE, the components are values in the range 0 to 1.
Definition at line 1971 of file imageio.c.
int WriteImage | ( | void * | Image, |
int | Width, | ||
int | Height, | ||
const char * | FileName, | ||
unsigned | Format, | ||
int | Quality | ||
) |
Write an image file from 8-bit RGBA image data.
Image | pointer to the image data |
Width,Height | image dimensions |
FileName | image file name |
Format | specifies how the data is formatted (see ReadImage) |
Quality | the JPEG image quality (between 0 and 100) |
The input Image
should be a 32-bit RGBA image stored as in the description of ReadImage
. WriteImage
writes to FileName
in the file format specified by its extension. If saving a JPEG image, the Quality
argument specifies the quality factor (between 0 and 100). Quality
has no effect on other formats.
The return value indicates success with 1 or failure with 0.
Definition at line 2074 of file imageio.c.