54 lines
2.7 KiB
C
54 lines
2.7 KiB
C
/* stbiw-0.92 - public domain - http://nothings.org/stb/stb_image_write.h
|
|
writes out PNG/BMP/TGA images to C stdio - Sean Barrett 2010
|
|
no warranty implied; use at your own risk
|
|
Before including,
|
|
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
|
in the file that you want to have the implementation.
|
|
ABOUT:
|
|
This header file is a library for writing images to C stdio. It could be
|
|
adapted to write to memory or a general streaming interface; let me know.
|
|
The PNG output is not optimal; it is 20-50% larger than the file
|
|
written by a decent optimizing implementation. This library is designed
|
|
for source code compactness and simplicitly, not optimal image file size
|
|
or run-time performance.
|
|
USAGE:
|
|
There are three functions, one for each image file format:
|
|
int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
|
|
int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
|
|
int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);
|
|
Each function returns 0 on failure and non-0 on success.
|
|
The functions create an image file defined by the parameters. The image
|
|
is a rectangle of pixels stored from left-to-right, top-to-bottom.
|
|
Each pixel contains 'comp' channels of data stored interleaved with 8-bits
|
|
per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is
|
|
monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.
|
|
The *data pointer points to the first byte of the top-left-most pixel.
|
|
For PNG, "stride_in_bytes" is the distance in bytes from the first byte of
|
|
a row of pixels to the first byte of the next row of pixels.
|
|
PNG creates output files with the same number of components as the input.
|
|
The BMP and TGA formats expand Y to RGB in the file format. BMP does not
|
|
output alpha.
|
|
PNG supports writing rectangles of data even when the bytes storing rows of
|
|
data are not consecutive in memory (e.g. sub-rectangles of a larger image),
|
|
by supplying the stride between the beginning of adjacent rows. The other
|
|
formats do not. (Thus you cannot write a native-format BMP through the BMP
|
|
writer, both because it is in BGR order and because it may have padding
|
|
at the end of the line.)
|
|
*/
|
|
|
|
#ifndef INCLUDE_STB_IMAGE_WRITE_H
|
|
#define INCLUDE_STB_IMAGE_WRITE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
|
|
extern int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
|
|
extern int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif//INCLUDE_STB_IMAGE_WRITE_H
|