when the jpeg encoder sees the flags optimize or progressive (or progression)
it will write the full image in one shot.
The bufsize needs to be big enough to hold the entire image. The current heuristic
is that the entire compressed image will fit in width * height bytes, but this
heuristic is only applied to save operations with the flag "optimize" and not to
save operations with the flag "progressive".
This patch fixes this oversight.
(Btw, it will probably be a good idea to have a loop that retries with a bigger
bufsize in case this guess is not big enough.)
Most of the differences are in tobytes/tostring naming and expected
behavior of the bytes() constructor. The latter was usually easy to fix
with the right bytes literal.
This is a good preview of what will have to happen in the Python 3 code.
This is Christoph Gohlke's test suite from his personal PIL package found
at http://www.lfd.uci.edu/~gohlke/pythonlibs/.
This is just to bring it in as a separate commit. Future commits will align
it with Pillow.