Commit Graph

103 Commits

Author SHA1 Message Date
Sean Barrett
e5d4d6fcce stb_image; optimize row computation in PR 2019-02-07 06:58:00 -08:00
Sean Barrett
b2bde485a2 Merge branch 'stbiw-fix-jpeg-flipping' of https://github.com/DanielGibson/stb into working 2019-02-07 06:48:44 -08:00
Sean Barrett
ff1eb8b8d4 Merge branch 'fix_stbi_write_hdr_core' of https://github.com/poppolopoppo/stb into working 2019-02-07 06:03:48 -08:00
Sean Barrett
f82dbd638c windows unicode: don't malloc buffers, add explicit STBI_WINDOWS_UTF8 #define 2019-02-07 05:55:03 -08:00
Daniel Gibson
1ad30e4e77 stb_image_write.h: Fix jpg flipping for non-multiple-of-8 sizes
JPG always encodes 8x8 pixel blocks. If the input image does not have
a width or height that's a multiple of 8, the last column or row is just
used multiple times for the remaining pixels of the block.
The original code first calculated p (the index into the pixel data)
with the "imaginary" row/colum (that might be up to 7 pixels too far
into each direction) and then subtracted the necessary amount of bytes
it if row >= height or col >= width.
That was a bit cryptic (IMHO), and didn't get more readable/obvious when
vertical flipping was added - which introduced a bug, by not taking
stbi__flip_vertically_on_write into account when adjusting p for
row >= height...

The code should be more obvious (and less buggy) now.

This fixes bug #592
2018-04-09 01:24:17 +02:00
PopPoLoPoPpo
f685ee4e58 Fix overflow in stbi_write_hdr_core()
b056850ea9 left an additional multiplication by x,
leading to overflow.
2018-02-27 00:08:45 +01:00
JR
d0ae424061 Re added unicode filename support for stb_image and stb_image_write with whitespace issues fixed. 2018-02-20 21:38:00 -05:00
Sean Barrett
543ad0c112 stb_image_write: tweak handling of STB_IMAGE_WRITE_STATIC 2018-02-11 11:29:32 -08:00
Sean Barrett
aeb2b4b64d tweak handling of STBIWDEF 2018-02-11 11:19:45 -08:00
Sean Barrett
dbf0fab1c7 stb_image_write: credits 2018-02-11 11:11:39 -08:00
Sean Barrett
2886b67f7f Merge branch 'stb_image_write_png_filters_fix' of https://github.com/kosua20/stb into working 2018-02-11 11:09:07 -08:00
Sean Barrett
6382814b8c Merge branch 'image_write_variable_typos' of https://github.com/cap/stb into working 2018-02-11 11:05:58 -08:00
Sean Barrett
4eef034d52 stb_write_image: fix typos 2018-02-11 11:05:20 -08:00
Cap Petschulat
6ab920bb6a stb_image_write: fix png compression level typos 2018-02-05 15:48:17 +09:00
Simon Rodriguez
34f087ce4c stb_image_write: fix indexing error when computing PNG filters with the stbi__flip_vertically_on_write on.
The PNG filters of the pixels row N are computed using row N-1 of the final image. If the image should be flipped when saving, this corresponds to row N+1 of the initial image.
2018-02-04 20:12:20 +01:00
Sean Barrett
445473bdb5 stb_image_write: handle malloc failure in zlib 2018-01-29 08:03:56 -08:00
Sean Barrett
b969dc38f3 stb_image_write: fix for fopen_s failure case 2018-01-29 06:06:29 -08:00
Sean Barrett
094cb31ec8 stb_image: compile as C; stb_image_write: credits 2018-01-29 04:03:18 -08:00
Sean Barrett
faf08e0018 Merge branch 'stb_image_write_mscrt_errors' of https://github.com/xeekworx/stb 2018-01-29 04:01:29 -08:00
Sean Barrett
3d7b4251f9 Merge branch 'png-ext-write' of https://github.com/akx/stb
Conflicts:
	stb_image_write.h
2018-01-29 03:14:31 -08:00
Sean Barrett
b48101c971 Merge branch 'update_stbi_jpg_dcoumentation' of https://github.com/Benjins/stb 2018-01-29 02:57:46 -08:00
Sean Barrett
35a3bf41e8 Integrate ZLIB changed from Daniel Gibson, fixup credits 2018-01-29 02:55:56 -08:00
Sean Barrett
9de22e5a70 Merge branch 'stbiw-png-compr' of https://github.com/DanielGibson/stb 2018-01-29 02:53:25 -08:00
Sean Barrett
b056850ea9 stb_image_write can flip images vertically 2018-01-29 02:52:49 -08:00
John Tullos
841862a622 Fixed grammar, spelling issues in comments
issue #533
2018-01-01 18:59:06 -06:00
John Tullos
32a7d5ab68 Added STBI_MSC_SECURE_CRT to support newer MSVC compilers as optional
For issue #533
2018-01-01 18:54:26 -06:00
John Tullos
5e844ffe70 Using secure versions of CRT calls to avoid Microsoft Visual C/C++ compiler errors/warnings. 2018-01-01 18:08:30 -06:00
Aarni Koskela
2c7b00ac21 Add force_filter and compression_level parameters to (new) stbi_write_png_to_mem_ex
* `force_filter` being < 0 means the original behavior (i.e. figure out
  the best-performing filter per scanline); any other values 0 <= x <= 4 correspond
  to PNG filters (0 = none, 1 = sub, 2 = up, 3 = average, 4 = Paeth).
* `compression_level` being < 0 equals `compression_level` 8 (the previous value).
  The higher this is, the better the compression should be (though it will use
  more memory).

These new parameters are not (yet) exposed for the higher-level API functions.
2017-08-07 14:52:53 +03:00
Benji Smith
923c9c3deb Correct function signature in stbi_write_jpg usage documentation. 2017-07-31 22:22:56 -07:00
Sean Barrett
961923b5a3 fix documentation 2017-07-24 03:32:20 -07:00
Sean Barrett
555efbedfc Update version numbers 2017-07-23 14:09:39 -07:00
Fabian Giesen
931662ae6e stb_image_write: Warning fix. 2017-07-22 16:04:07 -07:00
Daniel Gibson
be21113512 stb_image_write.h: Allow setting custom zlib compress function for PNG
The builtin stbi_zlib_compress does not compress as well as zlib or
miniz (which is not too surprising as it's <200 LOC), thus PNGs created
by stb_image_write are about 20-50% bigger than PNGs compressed with
libpng.
This change lets the user supply a custom deflate/zlib-style compress
function, which improves compression a lot. This was requested in #113.

Example for zlib:

#include <zlib.h>
unsigned char* compress_for_stbiw(unsigned char *data, int data_len,
                                  int *out_len, int quality)
{
  uLongf bufSize = compressBound(data_len);
  // note that buf will be free'd by stb_image_write.h
  // with STBIW_FREE() (plain free() by default)
  unsigned char* buf = malloc(bufSize);
  if(buf == NULL)  return NULL;
  if(compress2(buf, &bufSize, data, data_len, quality) != Z_OK)
  {
    free(buf);
    return NULL;
  }
  *out_len = bufSize;

  return buf;
}
#define STBIW_ZLIB_COMPRESS compress_for_stbiw
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
// ...
2017-07-04 19:34:31 +02:00
Daniel Gibson
e6bbecd3a9 stb_image_write.h: Set PNG compress lvl via stbi_write_png_level
This allows the user to change the deflate/zlib compress level used for
PNG compression by changing a global variable.
2017-07-04 18:07:33 +02:00
Daniel Gibson
f0baa0c287 stb_image_write.h: Fix compilation in C++11 mode
clang says:
error: non-constant-expression cannot be narrowed from type 'int'
      to 'unsigned char' in initializer list [-Wc++11-narrowing]

so I explicitly cast affected stuff to unsigned char.
2017-07-04 16:55:50 +02:00
Daniel Gibson
e5144a3996 stb_image_write.h: Consistently use STBIWDEF for stbi_write_*
Some functions were missing that in the definition, others weren't,
all had it in the declarations.

Added mention of JPG and HDR formats at the top of the file
2017-03-11 18:59:44 +01:00
Daniel Gibson
721c788fdb stb_image_write: JPEG writer based on jo_jpeg.cpp
jo_jpeg.cpp is a Public Domain JPEG writer written by Jon Olick in 2012
http://www.jonolick.com/code.html

My changes to jo_jpeg:
* port to plain C89 (+ // comments, as supported by MSVC6)
* support for 2 comp input (Greyscale+Alpha, Alpha is ignored)
* use stbi__write_context abstraction instead of stdio for writing
* adjust names to stbiw-style
2017-03-11 18:59:44 +01:00
Sean Barrett
47685c5f84 remove deprecated old-precision jpg path from stb_image.h
tweak license reference wording
2017-03-03 08:19:09 -08:00
Sean Barrett
51a5368dee Merge branch 'master' of https://github.com/pboettch/stb into working 2017-03-03 08:02:39 -08:00
Sean Barrett
96620a3a54 update version numbers 2017-01-16 00:51:24 -08:00
Sean Barrett
48710234f2 credits; 1/2/4-bit png fix; easy font spacing; NO_STDIO in image_write 2017-01-15 23:57:53 -08:00
PopPoLoPoPpo
19d03764b5 Fix #ifndef STBI_WRITE_NO_STDIO scioe for stbi_write_hdr()
stbi_write_hdr_to_func() should still be available even without STBI_WRITE_NO_STDIO,
just like other formats.
2017-01-03 02:45:16 +01:00
Patrick Boettcher
734576e6be image-write: fix monochrome bitmap writing from 8-bit-buffers
Now writing out monochrome bitmaps from 8-bit arrays works
as it does when using PNG.

Bitmaps need 3 bytes per pixel.
2016-06-15 10:36:39 +02:00
Sean Barrett
6e4154737c update version numbers, documentation, and contributors 2016-04-02 04:51:26 -07:00
Sean Barrett
097a70ae38 Merge branch 'master' of https://github.com/tulrich/stb 2016-04-02 02:56:39 -07:00
Thatcher Ulrich
291ad22e84 Replace large stack allocations with dynamic allocations. 2016-03-02 15:31:07 -05:00
Craig Donner
ee6978cb68 Slightly modify the public domain license to keep it in the public domain, but make it clear that even when dedications might not be recognized that the code is still usable. Given that this isn't dual-licensing under a different license, I'm hoping this will be acceptable. 2016-02-25 12:55:44 -08:00
Sean Barrett
f1d2002a1d update contributor list 2016-01-16 10:16:23 -08:00
Sean Barrett
58484eb73d Merge branch 'implicit_cast_fix' of https://github.com/filipwasil/stb into working 2016-01-16 10:11:54 -08:00
Sean Barrett
9f081b62a4 Merge branch 'stbiw_documentation_typo' of https://github.com/karjonas/stb into working 2016-01-16 10:11:00 -08:00