Commit Graph

154 Commits

Author SHA1 Message Date
Terseus
696924f5ac Added missing xx pointer check 2014-04-04 14:02:36 +02:00
Terseus
dbe3db6fc5 Oops, fixed typo in comments 2014-04-03 11:15:21 +02:00
Terseus
be09da6507 Rewrite of the ImagingDrawWideLine function
The previous version of the function didn't generate correct wide lines
of even width.

The most notable changes are:
  * Make variable names far more descriptive about the process.
  * Corrected the width calculation; we should deduct one pixel from the
    width because the pixels at the center of the line doesn't count for
    the triangles.
  * Now we calculate *two* ratios, one for left/top displacement (dxmin)
    and one for right/bottom (dxmax), this fix the behavior with lines
    of even width.

It can probably be optimized.
2014-04-02 21:30:42 +02:00
Terseus
cd332fc38a Rewrite of the polygon_generic function
The (previously refactored) polygon_generic function didn't draw
consistent polygons (equilateral polygons were not equilateral nor
symmetrical).

The most notable changes are:
  * The horizontal edges are searched for when finding the polygon
    boundaries, drawn and discarded from the edge list used to detect
    intersections.
  * The intersections are now checked and calculated from the current value
    of the scan line (ymin) instead of in the middle (ymin + 0.5).
  * Because the change in the scan line behavior, we should duplicate
    the intersections in the maximum Y value of an edge or there will be
    draw errors with concave and complex polygons.
  * The rounds of the X coordinates in the hline function calls are
    switched to draw the inner pixels.
  * Removed the ugly micro-optimization of qsort at the end.

This implementation of the scan line algorithm may not be technically
correct, it's not optimized and it have problems with some edge cases,
like a wide line from (x0, y) to (x1, y + 1), therefore it should be
reviewed in the future.
2014-04-02 21:05:13 +02:00
Terseus
8739613cfb Implementation of rounds around zero
The rounds used in the library are towards positive/negative infinity.
Since we're in a cartesian plane, rounds around zero are much more
convenient, so we can use positive and negative values with consistent
results.
2014-04-01 13:08:15 +02:00
Terseus
deecd8a137 Refactored polygon functions to unify logic
The functions `polygon8`, `polygon32` and `polygon32rgba` all have exactly
the same logic in code, only changes the hline function called inside.

Now all the logic is contained in `polygon_generic` which gets a
function pointer to the hline handler, so there is no duplicated code
anymore.
2014-04-01 13:01:03 +02:00
wiredfool
a2800ba9a1 Additional commits from pr 2014-03-27 20:00:10 -07:00
Alastair Houghton
18d6432036 Fixed some problems with the reduce option, as well as a number of warnings from GCC. 2014-03-27 08:35:38 +00:00
wiredfool
2b81156619 merge to master 2014-03-26 18:46:35 -07:00
Alastair Houghton
831216f609 Fixed a Python 3 specific crash. 2014-03-25 16:58:44 +00:00
Alastair Houghton
fea6811af0 Merged wiredfool's changes. 2014-03-19 14:58:47 +00:00
Alastair Houghton
ac8ebccfa6 Added tests and fixed a few bugs that the tests threw up. 2014-03-19 12:16:14 +00:00
wiredfool
dfe6fff10f Eliminating warning for possibly uninitialized variable use 2014-03-14 14:23:44 -07:00
wiredfool
ac52886da1 Fixed compilation errors on linux, ref #547 2014-03-14 11:35:23 -07:00
Alastair Houghton
5853d2aed0 Add a couple of unpackers. 2014-03-14 16:38:30 +00:00
Alastair Houghton
168acabcb0 Fixed some warnings. 2014-03-14 16:38:07 +00:00
Alastair Houghton
9a1b6966b5 Added precinct size option. Also added the jp2klib_version symbol on the _imaging module. 2014-03-14 15:40:30 +00:00
Alastair Houghton
5cb73c94e9 Fixed some Windows issues. 2014-03-14 14:35:09 +00:00
Alastair Houghton
cb1f990a92 Added seek support to make writing jp2 files work. Also added support for directly using an fd rather than relying on the Python loop, if we have a real fd. 2014-03-14 11:21:08 +00:00
Alastair Houghton
61fb89ec54 Added a JPEG 2000 encoder. 2014-03-13 18:27:16 +00:00
Alastair Houghton
aea0ec56b2 Fixed a small bug. 2014-03-13 13:48:15 +00:00
Alastair Houghton
9a4bff722f Decode tile-by-tile; saves memory and means we don't need to buffer the entire image in the OpenJPEG opj_image. 2014-03-13 13:44:26 +00:00
Alastair Houghton
5b22b715ce Fixed some bugs. 2014-03-13 12:29:03 +00:00
Alastair Houghton
d6b8f0f666 Added a JPEG 2000 decoder based on OpenJPEG. 2014-03-13 11:46:47 +00:00
wiredfool
89cb3c7e85 Use even stride when saving odd sized .pcx files 2014-03-03 23:05:50 -08:00
wiredfool
05cd72f4f0 mixed 4/8 tabs+spaces -> 4 spaces, additional bracing 2014-03-03 20:28:34 -08:00
wiredfool
5ecec7db10 Move image to first xsize*bands bytes, rather than including padding if stride > xsize*bands, fixes #523 2014-02-15 22:41:02 -08:00
wiredfool
e87e0333fb Merge branch 'i16-pixelaccess' into cffi-pixelaccess 2014-01-06 23:22:35 -08:00
wiredfool
1dd80b2625 reverted int32 changes 2013-12-30 21:00:32 -08:00
Alex Clark ☺
243160ee78 Merge pull request #448 from wiredfool/2gigapix-redux
2gigapix redux
2013-12-28 06:06:42 -08:00
Alex Clark ☺
d48f301d57 Merge pull request #423 from wiredfool/trns-png
Support for PNG tRNS header when converting from RGB->RGBA
2013-12-28 05:56:03 -08:00
wiredfool
77c36d6edc Using uint* for pixel access in mode I;16 and I;32, fixes #452 2013-12-19 21:39:18 -08:00
Eric Soroos
ec6fd4d672 mixed 8ch tabs + spaces -> 4 space indent 2013-12-13 15:17:43 -08:00
Eric Soroos
1060a59de9 int->py_ssize_t for potentially large numbers 2013-12-13 15:16:14 -08:00
wiredfool
0356741a29 Now using the rgbT2rgba conversion for L+transparency to RGBA, dropping the palette hack 2013-11-26 13:04:10 -08:00
wiredfool
c546c5a4c0 Added conversion for RGB+Transparency to RGBA that adds an alpha mask corresponding to the transparency value, fixes #421 2013-11-26 12:24:19 -08:00
wiredfool
42c17c5947 Removing unused, redundant compression variable. Actual compression setting is in the imagefiledirectory 2013-11-21 20:37:52 -08:00
wiredfool
cc5e8f0f6d Comments
Fixes #414
2013-11-20 17:03:46 -08:00
wiredfool
e4fe6ae7a3 Read only implementation of 12bit tiffs 2013-11-20 16:56:23 -08:00
Eric Soroos
3128a76495 MM and II 16 bit integer tiffs pack/write properly using libtiff on bigendian platform 2013-10-21 22:37:20 +00:00
Eric Soroos
6f8d968cbb MM and II 16 bit integer tiffs unpack properly using libtiff on bigendian platform 2013-10-21 22:17:33 +00:00
Alex Clark ☺
55a0792815 Merge pull request #380 from wiredfool/lcms2
LCMS1 replaced with LCMS2
2013-10-16 09:09:15 -07:00
wiredfool
1865a5c438 Shifting the midpoint of the ab channels to 128. unshifting back to signed int on pack 2013-10-15 22:06:30 -07:00
Seth VanHeulen
fc474a7b6f Added more raw decoder 16 bit pixel formats 2013-10-15 11:35:53 -04:00
wiredfool
4458787f5e Back to RGBx format, 3 bands in 4 bytes. Tests for internal consistency 2013-10-14 22:47:27 -07:00
wiredfool
cb9440a2f5 packing into 24bit 2013-10-11 23:31:26 -07:00
wiredfool
13d62c9f91 Added LAB to Unpack 2013-10-11 22:40:37 -07:00
wiredfool
eca93101de B->A, spacing 2013-10-11 22:40:14 -07:00
wiredfool
1111fca8c6 Solved Segfault 2013-10-11 22:29:19 -07:00
wiredfool
1c3932e89f Added LAB mode, core dumped 2013-10-10 23:27:34 -07:00
wiredfool
b9f94b7632 adding RGBa->RGBA conversion 2013-10-04 13:24:47 -07:00
Nikolas Stevenson-Molnar
dcd40ce5b5 Fix for #254 2013-09-30 01:04:58 -07:00
Christoph Gohlke
4983f6da77 BUG: add typedef uint64_t for msvc 2013-09-27 15:03:27 -07:00
Oliver Tonnhofer
147a0204eb fix FASTOCTREE quantizer for large images (>16MP)
the color value counter sums all color values and this overflows
a uint32 at 16M white pixels, 32M gray pixels, etc.
2013-09-26 10:15:42 +02:00
wiredfool
ac1d43bdef 8 character tabs -> spaces 2013-07-10 22:21:49 -07:00
wiredfool
993e075c0d Add conversions from I;16 to F to retain 16 bit precision 2013-07-08 23:21:41 -07:00
wiredfool
c7264b5d4b 8 char tabs -> whitespace 2013-07-08 22:39:16 -07:00
Alexey Buzanov
df0e214d46 hide tiff warnings 2013-07-01 19:48:21 +04:00
Alex Clark
bb1b3a532c Cleanup WS, courtesy of @Arfrever
find * -type f "-(" -name "*.bdf" -o -name "*.c" -o -name "*.h" -o -name "*.py" -o -name "*.rst" -o -name "*.txt" "-)" -exec sed -e "s/[[:space:]]*$//" -i {} \;
2013-06-30 18:42:19 -04:00
Alex Clark ☺
aea9570a2c Merge pull request #221 from wiredfool/jpeg_memoryleak
Jpeg Decode memory leak fix.
2013-05-16 12:42:45 -07:00
wiredfool
f6381ba00c Added cleanup method to prevent memory leaks from truncated jpeg decodes 2013-05-15 21:16:37 -07:00
wiredfool
454a914b56 Whitespace, 8 space tabs -> 4 spaces 2013-05-15 19:57:45 -07:00
wiredfool
37359369ce Code to ensure buffer space for exif write and jpeg_write_scanline calls, tests, corrected buffer length calculation 2013-05-14 22:29:31 -07:00
wiredfool
11ce826121 mixed 8 char tabs & spaces -> spaces 2013-05-14 20:45:07 -07:00
Evert Rol
8e74b50e0f Fix issue #193: remove double typedef declaration. 2013-04-17 14:27:07 +02:00
Sandro Mani
e2c62ff1d2 Fix warning: pointer targets differ in signedness 2013-04-12 17:54:10 +02:00
Alex Clark ☺
21562761ac Merge pull request #179 from manisandro/quantization
Make quantization code more portable
2013-04-09 06:14:03 -07:00
Sandro Mani
07f632194d Make quantization code more portable 2013-04-08 00:52:15 +02:00
homm
ebb9029fbe add parentheses to avoid warnings 2013-03-27 23:19:04 +04:00
homm
a511ef8b05 move declarations to make ANSI compilers happy 2013-03-27 23:18:10 +04:00
homm
a83ef0f0ed ≈20% faster, 2 times more precisely (0.17% difference against 0.37%) 2013-03-26 01:15:18 +04:00
homm
af96b5d4b2 Precision improvement. No performance affected. 2013-03-25 00:06:02 +04:00
homm
0663e14444 speedup. divisions replaced by shifts. 2013-03-23 16:54:02 +04:00
homm
e88490b4f2 Precision improvement. ≈60% performance lost 2013-03-23 14:26:14 +04:00
homm
c39a51bcf0 Significant performance improvement of alpha_composite function. 2013-03-23 05:46:39 +04:00
Sandro Mani
b57c2ae0e9 Squash a memory leak 2013-03-18 00:54:54 +01:00
Alex Clark ☺
a6792ff7e4 Merge pull request #134 from cgohlke/patch-4
Disable msvc10 compiler optimizations for topalette and tobilevel
2013-03-15 05:08:14 -07:00
Christoph Gohlke
bb61c7633a Disable msvc10 compiler optimizations for topalette and tobilevel
Fixes issue #90
2013-03-14 23:35:02 -07:00
wiredfool
b5335c0cf3 Switching to strncpy, fixing potential buffer overflow in palette as well 2013-03-14 20:46:23 -07:00
wiredfool
66965b6bb4 fix buffer overflow for YCbCr histograms 2013-03-14 20:46:23 -07:00
wiredfool
d98abd877b merge to master 2013-03-14 14:38:49 -07:00
wiredfool
7d99141405 force seek to beginning of file 2013-03-14 13:25:23 -07:00
Christoph Gohlke
26c037a08d Disable debug prints in g4 tiff decoder 2013-03-14 09:03:18 -07:00
Alex Clark
990f5ddd15 Add contributors ; rename Tiff.h, fixes #103 2013-03-13 21:37:42 -04:00
Christoph Gohlke
9f09a9253c Fix compile error with msvc 2013-03-13 17:33:16 -07:00
wiredfool
e83dbaccce scaling back on redefinitions 2013-03-13 15:11:01 -07:00
wiredfool
35ce34a5fa enabling debug build to get better info on travis errors 2013-03-12 22:54:13 -07:00
wiredfool
7226d0dc26 Merge branch 'master' into g4_support 2013-03-12 22:24:36 -07:00
Alex Clark ☺
d6f597a1ad Merge pull request #95 from olt/pil-png-transp-backport
Backport PNG/ZIP improvements from PIL repo
2013-03-12 03:43:06 -07:00
Oliver Tonnhofer
d4a93754ee release GIL during Image.fill 2013-03-11 20:45:15 +01:00
Oliver Tonnhofer
6537ba19c3 backport PIL's PNG/Zip improvements
- add new FASTOCTREE quantizer with alpha support
- make ZIP compress level and type configurable
- support reading/writing PNGs with paletted alpha

source 3637439d51
2013-03-11 20:33:04 +01:00
wiredfool
5ba6564e26 initial merge of wiredfool/Python-Imaging-Library-G4-Tiff-Support 2013-03-08 19:51:59 -08:00
wiredfool
e782fe721e initial merge of wiredfool/Python-Imaging-Library-G4-Tiff-Support 2013-03-08 19:51:10 -08:00
Christoph Gohlke
cee97b83cc 64 bit proof ImagingNew 2013-03-08 11:03:43 -08:00
etienne
55f2dc7b0b Added quantization tables and subsampling options to the JPEG encoder. 2013-03-06 20:23:02 -05:00
Sandro Mani
416d5f70af Cast hash table values to unsigned long 2013-02-18 16:48:46 +01:00
Sandro Mani
8c7c373676 Fix buffer overflow
This patch was carried by fedora for python-imaging
See https://bugzilla.redhat.com/show_bug.cgi?id=703212
2013-02-06 00:51:25 +01:00
d-schmidt
addf0f4d95 Added possibility to save exif information in jpeg-files 2013-01-10 21:36:21 +01:00
Brian Crowell
4459715b6e py3k: Fix strict aliasing warnings under Python 3 2013-01-10 08:46:37 -06:00
Tom Payne
9d35947363 Avoid rounding error in Image.alpha_composite 2012-12-19 14:25:22 +01:00