This header file is a library for writing images to C stdio.
The PNG output is not optimal; it is 20-50% larger than the file written by a decent optimizing implementation; though providing a custom zlib compress
function (see zlib_compress) can mitigate that. This library is designed for source code compactness and simplicity, not optimal image
file size or run-time performance.
There are five 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);
int stbi_write_hdr(char const *filename, int w, int h, int comp, const void *data);
int stbi_write_jpg(char const *filename, int w, int h, int comp, const float *data, int quality);
void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically
There are also five equivalent functions that use an arbitrary write function. You are expected to open/close your file-equivalent before and after calling these:
int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes);
int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data);
int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data);
int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);
int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality);
where the callback is:
void stbi_write_func(void *context, void *data, int size);
You can configure it with these global variables:
int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE
int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression
int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode
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.
| Modifier and Type | Field and Description |
|---|---|
| public static final IntBuffer | stbi_write_force_png_filter
Returns the address of the global variable |
| public static final IntBuffer | stbi_write_png_compression_level
Returns the address of the global variable |
| public static final IntBuffer | stbi_write_tga_with_rle
Returns the address of the global variable |
| public static final PointerBuffer | stbi_zlib_compress
Returns the address of the global variable |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public static native void | |
| public static native int | |
| public static native int | nstbi_write_bmp_to_func(long func, long context, int w, int h, int comp, long data)
Unsafe version of: |
| private static native long | |
| public static native int | |
| public static native int | nstbi_write_hdr(long filename, int w, int h, int comp, float[] data)
Array version of: |
| public static native int | nstbi_write_hdr_to_func(long func, long context, int w, int h, int comp, long data)
Unsafe version of: |
| public static native int | nstbi_write_hdr_to_func(long func, long context, int w, int h, int comp, float[] data)
Array version of: |
| public static native int | nstbi_write_jpg(long filename, int w, int h, int comp, long data, int quality)
Unsafe version of: |
| public static native int | nstbi_write_jpg_to_func(long func, long context, int w, int h, int comp, long data, int quality)
Unsafe version of: |
| public static native int | nstbi_write_png(long filename, int w, int h, int comp, long data, int stride_in_bytes)
Unsafe version of: |
| private static native long | |
| public static native int | nstbi_write_png_to_func(long func, long context, int w, int h, int comp, long data, int stride_in_bytes)
Unsafe version of: |
| public static native int | |
| public static native int | nstbi_write_tga_to_func(long func, long context, int w, int h, int comp, long data)
Unsafe version of: |
| private static native long | |
| private static native long | |
| public static void | stbi_flip_vertically_on_write(boolean
true to flip data vertically flip_boolean)Configures if the written image should flipped vertically. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Writes a BMP image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Writes a BMP image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe callback function func, long a context that will be passed to context, int functhe image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Callback version of |
| private static IntBuffer | |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, FloatBuffer the image data data)Writes an HDR image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, FloatBuffer the image data data)Writes an HDR image file. |
| public static boolean | stbi_write_hdr(ByteBuffer filename, int w, int h, int comp, float[] data)
Array version of: |
| public static boolean | stbi_write_hdr(CharSequence filename, int w, int h, int comp, float[] data)
Array version of: |
| public static boolean | Returns: 1 on success, 0 on failurethe callback function func, long a context that will be passed to context, int functhe image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, FloatBuffer the image data data)Callback version of |
| public static boolean | stbi_write_hdr_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, float[] data)
Array version of: |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the compression quality quality)Writes a JPEG image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the compression quality quality)Writes a JPEG image file. |
| public static int | Returns: 1 on success, 0 on failurethe callback function func, long a context that will be passed to context, int functhe image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the compression quality quality)Callback version of |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the distance in bytes from the first byte of a row of pixels to the first byte of the next row of pixels stride_in_bytes)Writes a PNR image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the distance in bytes from the first byte of a row of pixels to the first byte of the next row of pixels stride_in_bytes)Writes a PNR image file. |
| private static IntBuffer | |
| public static boolean | Returns: 1 on success, 0 on failurethe callback function func, long a context that will be passed to context, int functhe image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data, int the distance in bytes from the first byte of a row of pixels to the first byte of the next row of pixels stride_in_bytes)Callback version of |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Writes a TGA image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe image file path filename, int the image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Writes a TGA image file. |
| public static boolean | Returns: 1 on success, 0 on failurethe callback function func, long a context that will be passed to context, int functhe image width, in pixels w, int the image height, in pixels h, int the number of channels in each pixel comp, ByteBuffer the image data data)Callback version of |
| private static IntBuffer | |
| private static PointerBuffer |
| stbi_write_force_png_filter | back to summary |
|---|---|
| public static final IntBuffer stbi_write_force_png_filter Returns the address of the global variable | |
| stbi_write_png_compression_level | back to summary |
|---|---|
| public static final IntBuffer stbi_write_png_compression_level Returns the address of the global variable | |
| stbi_write_tga_with_rle | back to summary |
|---|---|
| public static final IntBuffer stbi_write_tga_with_rle Returns the address of the global variable | |
| stbi_zlib_compress | back to summary |
|---|---|
| public static final PointerBuffer stbi_zlib_compress Returns the address of the global variable The address of an | |
| STBImageWrite | back to summary |
|---|---|
| protected STBImageWrite() | |
| nstbi_flip_vertically_on_write | back to summary |
|---|---|
| public static native void nstbi_flip_vertically_on_write(int flip_boolean) Unsafe version of: | |
| nstbi_write_bmp | back to summary |
|---|---|
| public static native int nstbi_write_bmp(long filename, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_bmp_to_func | back to summary |
|---|---|
| public static native int nstbi_write_bmp_to_func(long func, long context, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_force_png_filter | back to summary |
|---|---|
| private static native long nstbi_write_force_png_filter() | |
| nstbi_write_hdr | back to summary |
|---|---|
| public static native int nstbi_write_hdr(long filename, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_hdr | back to summary |
|---|---|
| public static native int nstbi_write_hdr(long filename, int w, int h, int comp, float[] data) Array version of: | |
| nstbi_write_hdr_to_func | back to summary |
|---|---|
| public static native int nstbi_write_hdr_to_func(long func, long context, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_hdr_to_func | back to summary |
|---|---|
| public static native int nstbi_write_hdr_to_func(long func, long context, int w, int h, int comp, float[] data) Array version of: | |
| nstbi_write_jpg | back to summary |
|---|---|
| public static native int nstbi_write_jpg(long filename, int w, int h, int comp, long data, int quality) Unsafe version of: | |
| nstbi_write_jpg_to_func | back to summary |
|---|---|
| public static native int nstbi_write_jpg_to_func(long func, long context, int w, int h, int comp, long data, int quality) Unsafe version of: | |
| nstbi_write_png | back to summary |
|---|---|
| public static native int nstbi_write_png(long filename, int w, int h, int comp, long data, int stride_in_bytes) Unsafe version of: | |
| nstbi_write_png_compression_level | back to summary |
|---|---|
| private static native long nstbi_write_png_compression_level() | |
| nstbi_write_png_to_func | back to summary |
|---|---|
| public static native int nstbi_write_png_to_func(long func, long context, int w, int h, int comp, long data, int stride_in_bytes) Unsafe version of: | |
| nstbi_write_tga | back to summary |
|---|---|
| public static native int nstbi_write_tga(long filename, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_tga_to_func | back to summary |
|---|---|
| public static native int nstbi_write_tga_to_func(long func, long context, int w, int h, int comp, long data) Unsafe version of: | |
| nstbi_write_tga_with_rle | back to summary |
|---|---|
| private static native long nstbi_write_tga_with_rle() | |
| nstbi_zlib_compress | back to summary |
|---|---|
| private static native long nstbi_zlib_compress() | |
| stbi_flip_vertically_on_write | back to summary |
|---|---|
| public static void stbi_flip_vertically_on_write(boolean flip_boolean) Configures if the written image should flipped vertically.
| |
| stbi_write_bmp | back to summary |
|---|---|
| public static boolean stbi_write_bmp(ByteBuffer filename, int w, int h, int comp, ByteBuffer data) Writes a BMP image file. The BMP format expands Y to RGB in the file format and does not output alpha.
| |
| stbi_write_bmp | back to summary |
|---|---|
| public static boolean stbi_write_bmp(CharSequence filename, int w, int h, int comp, ByteBuffer data) Writes a BMP image file. The BMP format expands Y to RGB in the file format and does not output alpha.
| |
| stbi_write_bmp_to_func | back to summary |
|---|---|
| public static boolean stbi_write_bmp_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, ByteBuffer data) Callback version of
| |
| stbi_write_force_png_filter | back to summary |
|---|---|
private static IntBuffer stbi_write_force_png_filter()
| |
| stbi_write_hdr | back to summary |
|---|---|
| public static boolean stbi_write_hdr(ByteBuffer filename, int w, int h, int comp, FloatBuffer data) Writes an HDR image file. HDR expects linear float data. Since the format is always 32-bit rgb(e) data, alpha (if provided) is discarded, and for monochrome data it is replicated across all three channels.
| |
| stbi_write_hdr | back to summary |
|---|---|
| public static boolean stbi_write_hdr(CharSequence filename, int w, int h, int comp, FloatBuffer data) Writes an HDR image file. HDR expects linear float data. Since the format is always 32-bit rgb(e) data, alpha (if provided) is discarded, and for monochrome data it is replicated across all three channels.
| |
| stbi_write_hdr | back to summary |
|---|---|
| public static boolean stbi_write_hdr(ByteBuffer filename, int w, int h, int comp, float[] data) Array version of:
| |
| stbi_write_hdr | back to summary |
|---|---|
| public static boolean stbi_write_hdr(CharSequence filename, int w, int h, int comp, float[] data) Array version of:
| |
| stbi_write_hdr_to_func | back to summary |
|---|---|
| public static boolean stbi_write_hdr_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, FloatBuffer data) Callback version of
| |
| stbi_write_hdr_to_func | back to summary |
|---|---|
| public static boolean stbi_write_hdr_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, float[] data) Array version of:
| |
| stbi_write_jpg | back to summary |
|---|---|
| public static boolean stbi_write_jpg(ByteBuffer filename, int w, int h, int comp, ByteBuffer data, int quality) Writes a JPEG image file. JPEG does ignore alpha channels in input data; quality is between 1 and 100. Higher quality looks better but results in a bigger image. JPEG baseline (no JPEG progressive).
| |
| stbi_write_jpg | back to summary |
|---|---|
| public static boolean stbi_write_jpg(CharSequence filename, int w, int h, int comp, ByteBuffer data, int quality) Writes a JPEG image file. JPEG does ignore alpha channels in input data; quality is between 1 and 100. Higher quality looks better but results in a bigger image. JPEG baseline (no JPEG progressive).
| |
| stbi_write_jpg_to_func | back to summary |
|---|---|
| public static int stbi_write_jpg_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, ByteBuffer data, int quality) Callback version of
| |
| stbi_write_png | back to summary |
|---|---|
| public static boolean stbi_write_png(ByteBuffer filename, int w, int h, int comp, ByteBuffer data, int stride_in_bytes) Writes a PNR image file. PNG creates output files with the same number of components as the input. 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.) PNG allows you to set the deflate compression level by setting the global variable
| |
| stbi_write_png | back to summary |
|---|---|
| public static boolean stbi_write_png(CharSequence filename, int w, int h, int comp, ByteBuffer data, int stride_in_bytes) Writes a PNR image file. PNG creates output files with the same number of components as the input. 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.) PNG allows you to set the deflate compression level by setting the global variable
| |
| stbi_write_png_compression_level | back to summary |
|---|---|
private static IntBuffer stbi_write_png_compression_level()
| |
| stbi_write_png_to_func | back to summary |
|---|---|
| public static boolean stbi_write_png_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, ByteBuffer data, int stride_in_bytes) Callback version of
| |
| stbi_write_tga | back to summary |
|---|---|
| public static boolean stbi_write_tga(ByteBuffer filename, int w, int h, int comp, ByteBuffer data) Writes a TGA image file. TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed data, set the global variable
| |
| stbi_write_tga | back to summary |
|---|---|
| public static boolean stbi_write_tga(CharSequence filename, int w, int h, int comp, ByteBuffer data) Writes a TGA image file. TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed data, set the global variable
| |
| stbi_write_tga_to_func | back to summary |
|---|---|
| public static boolean stbi_write_tga_to_func(STBIWriteCallbackI func, long context, int w, int h, int comp, ByteBuffer data) Callback version of
| |
| stbi_write_tga_with_rle | back to summary |
|---|---|
private static IntBuffer stbi_write_tga_with_rle()
| |
| stbi_zlib_compress | back to summary |
|---|---|
private static PointerBuffer stbi_zlib_compress()
| |