Efros-Leung
Exemplar-basedtexturesynthesis(Efros-Leung)
|
PNG read/write simplified interface. More...
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <png.h>
#include "io_png.h"
Defines | |
#define | PNG_SIG_LEN 4 |
#define | IO_PNG_U8 0x0001 /* 8bit unsigned integer */ |
#define | IO_PNG_F32 0x0002 /* 32bit float */ |
Functions | |
char * | io_png_info (void) |
helps tracking versions, via the string tag inserted into the library | |
unsigned char * | io_png_read_u8 (const char *fname, size_t *nxp, size_t *nyp, size_t *ncp) |
read a PNG file into a 8bit integer array | |
unsigned char * | io_png_read_u8_rgb (const char *fname, size_t *nxp, size_t *nyp) |
read a PNG file into a 8bit integer array, converted to RGB | |
unsigned char * | io_png_read_u8_gray (const char *fname, size_t *nxp, size_t *nyp) |
read a PNG file into a 8bit integer array, converted to gray | |
float * | io_png_read_f32 (const char *fname, size_t *nxp, size_t *nyp, size_t *ncp) |
read a PNG file into a 32bit float array | |
float * | io_png_read_f32_rgb (const char *fname, size_t *nxp, size_t *nyp) |
read a PNG file into a 32bit float array, converted to RGB | |
float * | io_png_read_f32_gray (const char *fname, size_t *nxp, size_t *nyp) |
read a PNG file into a 32bit float array, converted to gray | |
int | io_png_write_u8 (const char *fname, const unsigned char *data, size_t nx, size_t ny, size_t nc) |
write a 8bit unsigned integer array into a PNG file | |
int | io_png_write_f32 (const char *fname, const float *data, size_t nx, size_t ny, size_t nc) |
write a float array into a PNG file |
PNG read/write simplified interface.
This is a front-end to libpng, with routines to:
Multi-channel images are handled: grey, grey+alpha, rgb and rgb+alpha, as well as on-the-fly color model conversion.
handle lossless 16bit data
internally handle RGB/gray conversion in io_png_read_raw()
handle deinterlacing as a libpng transform function
char* io_png_info | ( | void | ) |
helps tracking versions, via the string tag inserted into the library
This function is not expected to be used in real-world programs.
float* io_png_read_f32 | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp, | ||
size_t * | ncp | ||
) |
read a PNG file into a 32bit float array
The array contains the deinterlaced channels. 1, 2, 4 and 8bit images are converted to float values between 0. and 1., 3., 15. or 255. 16bit images are also downscaled to 8bit before conversion.
fname | PNG file name |
nxp,nyp,ncp | pointers to variables to be filled with the number of columns, lines and channels of the image |
float* io_png_read_f32_gray | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp | ||
) |
read a PNG file into a 32bit float array, converted to gray
See io_png_read_f32() for details.
float* io_png_read_f32_rgb | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp | ||
) |
read a PNG file into a 32bit float array, converted to RGB
See io_png_read_f32() for details.
unsigned char* io_png_read_u8 | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp, | ||
size_t * | ncp | ||
) |
read a PNG file into a 8bit integer array
The array contains the deinterlaced channels. 1, 2 and 4bit images are converted to 8bit. 16bit images are previously downscaled to 8bit.
fname | PNG file name |
nxp,nyp,ncp | pointers to variables to be filled with the number of columns, lines and channels of the image |
unsigned char* io_png_read_u8_gray | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp | ||
) |
read a PNG file into a 8bit integer array, converted to gray
See io_png_read_u8() for details.
unsigned char* io_png_read_u8_rgb | ( | const char * | fname, |
size_t * | nxp, | ||
size_t * | nyp | ||
) |
read a PNG file into a 8bit integer array, converted to RGB
See io_png_read_u8() for details.
int io_png_write_f32 | ( | const char * | fname, |
const float * | data, | ||
size_t | nx, | ||
size_t | ny, | ||
size_t | nc | ||
) |
write a float array into a PNG file
The float values are rounded to 8bit integers, and bounded to [0, 255].
fname | PNG file name |
data | array to write |
nx,ny,nc | number of columns, lines and channels of the image |
int io_png_write_u8 | ( | const char * | fname, |
const unsigned char * | data, | ||
size_t | nx, | ||
size_t | ny, | ||
size_t | nc | ||
) |
write a 8bit unsigned integer array into a PNG file
fname | PNG file name |
data | array to write |
nx,ny,nc | number of columns, lines and channels of the image |