[libpng16] Corrected handling of row_pointers in example.c and added some
comments. It has apparently been wrong since libpng-1.0.1c (confusing use of a 1D and a 2D array for the image source).
This commit is contained in:
parent
ee427ad39a
commit
cad0150d12
@ -968,12 +968,14 @@ void write_png(char *file_name /* , ... other image information ... */)
|
|||||||
* use the first method if you aren't handling interlacing yourself.
|
* use the first method if you aren't handling interlacing yourself.
|
||||||
*/
|
*/
|
||||||
png_uint_32 k, height, width;
|
png_uint_32 k, height, width;
|
||||||
png_byte image[height][width*bytes_per_pixel];
|
/* In this example, "image" is a one-dimensional array of bytes */
|
||||||
|
png_byte image[height*width*bytes_per_pixel];
|
||||||
png_bytep row_pointers[height];
|
png_bytep row_pointers[height];
|
||||||
|
|
||||||
if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
|
if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
|
||||||
png_error (png_ptr, "Image is too tall to process in memory");
|
png_error (png_ptr, "Image is too tall to process in memory");
|
||||||
|
|
||||||
|
/* Set up pointers into your "image" byte array */
|
||||||
for (k = 0; k < height; k++)
|
for (k = 0; k < height; k++)
|
||||||
row_pointers[k] = image + k*width*bytes_per_pixel;
|
row_pointers[k] = image + k*width*bytes_per_pixel;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user