Commit Graph

374 Commits

Author SHA1 Message Date
homm
cc9eff5c68 fast realization with moving window.
linear speed against any radius
2014-10-12 17:47:00 +04:00
homm
a6937d84d8 first Horizontal Blur for 32 2014-10-12 17:11:24 +04:00
homm
d49459f5b2 box blur dummy 2014-10-12 16:30:00 +04:00
homm
e38a64b21b round values with initial .5
this improves performance and readabillity
2014-10-12 15:13:37 +04:00
homm
bc24685344 do sum calculation in same loop as maskData calculation 2014-10-12 14:21:13 +04:00
homm
51984f4aa8 fix radius == 0 2014-10-12 14:16:09 +04:00
homm
84b9f16bfd add effective_scale to all APIs 2014-10-12 03:29:20 +04:00
homm
091b15f9d5 rename vars 2014-10-12 03:19:26 +04:00
homm
5bb0cfa17a remove pseudo vcs 2014-10-12 02:05:13 +04:00
homm
b1b5db16cd padding not using anywhere 2014-10-12 00:50:18 +04:00
homm
7bc19c4019 reference gaussian_blur implementation
radius meaning match graphicmagick, pixelmator other software
  and standard deviation from classic gaussian blur algorithm
2014-10-11 23:51:26 +04:00
homm
bef7e1dce8 cache hasAlpha for ImagingUnsharpMask 2014-10-08 17:40:33 +04:00
homm
e56aed1a95 round pixel values 2014-10-08 15:05:48 +04:00
homm
05c99131e0 fix blur for RGBA & RGBX 2014-10-06 21:55:43 +04:00
homm
626acf705f convert tabs to spaces 2014-10-06 21:04:54 +04:00
Sandro Mani
7502e6dd45 Remove executable permissions from Jpeg2KEncode.c 2014-10-03 09:57:32 +02:00
Andrew Murray
006229595a Remove unused variable in libImaging 2014-10-02 07:48:12 +10:00
wiredfool
d64b2376bc Memory Leak: Freeing malloc'd memory in Jpeg Encode 2014-09-24 15:46:24 -07:00
wiredfool
00addab5e4 Real fix for PR #915, keep track of the qtables length 2014-09-23 09:23:55 -07:00
Christoph Gohlke
b23c57e12a Fix segfault in TestFileJpeg.test_quality_keep on win-amd64 2014-09-22 14:39:08 -07:00
Christoph Gohlke
f3e3af6686 Fix msvc build error 2014-09-21 16:48:35 -07:00
Josh Ware
94194ed248 Cleaning up.
Reduced memory limit to 1GB
2014-09-12 22:09:27 -07:00
Josh Ware
dd221d9ec0 Don't Py_DECREF context->quality_layers if there is no encoder 2014-09-12 22:09:27 -07:00
Josh Ware
e4e1f5c2d4 More testing... 2014-09-12 22:09:27 -07:00
Josh Ware
9ccc930784 Looking for cleanup segfault 2014-09-12 22:09:27 -07:00
Josh Ware
7407371deb NULLing pointers on cleanup 2014-09-12 22:09:27 -07:00
Josh Ware
caa95a26b2 Added memory leak fix and testing for Encoder 2014-09-12 22:09:27 -07:00
Josh Ware
b78e5444f4 Prevent multiple calls to ImagingIncrementalCodecDestroy 2014-09-12 22:09:27 -07:00
Kenny Ostrom
d5b4f136c5 added ifd offset to the tiff decoder args, call TIFFSetSubDirectory 2014-09-02 15:20:25 -07:00
hugovk
3a9612af50 Test mandelbrot with bad arguments 2014-09-02 16:39:35 +03:00
hugovk
bcc5305125 Add access functions for ImagingEffectSpread with a test 2014-09-02 15:53:58 +03:00
hugovk
8c96d38ce9 Add access functions for ImagingEffectMandelbrot with a test 2014-09-02 15:14:00 +03:00
hugovk
76ef83263b Remove unreachable and never completed Perlin turbulence code 2014-09-02 14:47:34 +03:00
hugovk
860e67e1c4 Add access functions for ImagingEffectNoise with a test 2014-09-02 14:11:08 +03:00
wiredfool
9d00686f53 backup implementation of Round for windows platforms 2014-08-24 16:37:54 -07:00
wiredfool
97b5c72630 backup implementation of Round for windows platforms 2014-08-22 16:14:48 -07:00
wiredfool
c7b90f39f4 Merge from master 2014-08-22 14:50:33 -07:00
wiredfool
023ec0a2fc Incorrect type -- fails on OSX 2014-07-25 10:32:55 -07:00
wiredfool
0bb1cd398f Conversion between RGB and HSV images 2014-07-22 16:10:02 -07:00
wiredfool
625ff24358 Storage, packing and access for HSV format images 2014-07-22 16:09:22 -07:00
wiredfool
1008d6a993 Windows compatibility 2014-07-05 15:06:17 -07:00
wiredfool
b7f56409eb Multiplication needs to be 64bit, to handle overflow regardless of the bittedness of the machine, fixes #771# 2014-07-05 14:30:34 -07:00
Alex Clark ☺
b2ed31e8cd Merge pull request #737 from wiredfool/terseus_imagedraw
Merged Imagedraw rewrite
2014-07-01 14:15:11 -04:00
wiredfool
98a4991762 Using local block rather than array literal 2014-07-01 10:20:15 -07:00
wiredfool
a10b91786a Fix compilation errors with C90 standard 2014-07-01 10:05:38 -07:00
cgohlke
767182a56f ENH: enable inline functions by default 2014-06-30 15:26:41 -07:00
wiredfool
3bf375c5f7 Merge branch 'master' into terseus_imagedraw 2014-06-30 14:24:59 -07:00
wiredfool
50bbb5e0c5 Removed unused function 2014-06-30 14:12:30 -07:00
David Joy
b147dea535 Add tests and fix a 16bit vs 32bit integer bug
Yay unit tests!
2014-06-25 14:06:56 -04:00
David Joy
479693417f Merge the rest of the patches
Now it actually works and passes the test suite
2014-06-25 11:42:06 -04:00
David Joy
433ec1c219 Clean commit of 16-bit monochrome JPEK2000 support 2014-06-25 11:13:33 -04:00
Hugo
9f0b688952 Merge pull request #725 from cgohlke/patch-2
Fix msvc warning: 'inline' : macro redefinition
2014-06-25 10:47:47 +03:00
cgohlke
e79f996a45 Fix test_imagedraw failures 2014-06-25 00:07:07 -07:00
cgohlke
b593ff06ad Fix msvc warning: 'inline' : macro redefinition 2014-06-24 22:23:17 -07:00
wiredfool
a990af1b97 Merge from master 2014-06-24 16:48:38 -07:00
Alex Clark ☺
a126844135 Merge pull request #681 from wiredfool/openjpeg_21
OpenJpeg 2.1
2014-06-22 15:39:32 -04:00
wiredfool
05d8cb5b8f Don't carve out exceptions for py2.4 compilers anymore 2014-06-18 16:08:50 -07:00
wiredfool
a8e02e093a We don't need unistd.h anymore on unix platforms either 2014-06-18 16:08:16 -07:00
James Anderson
5ceb3ca875 Issue #697. On MSVC 2012 builds <unistd.h> is not required. 2014-06-18 15:54:21 -07:00
wiredfool
64efea9ed8 Merge branch 'master' into winbuild 2014-06-05 00:15:58 +00:00
Alastair Houghton
72ecb8752e Changed test for OpenJPEG 2.0 2014-05-27 12:52:50 +01:00
Alastair Houghton
1011e51083 Added support for OpenJPEG 2.1. 2014-05-27 12:43:54 +01:00
wiredfool
d7c049504d Merge pull request #643 from CounterPillow/datatype-fix
Change unsigned INT16 to UINT16
2014-05-20 16:45:06 +01:00
Nicolas F
052ea606bf Clean up defines and includes for Windows
1)  Renamed USE_INLINE to PIL_USE_INLINE to avoid conflicts with
    other headers/libraries.

2)  Replace __WIN32__ and WIN32 with _WIN32

3)  Don't define WIN32 when the compiler is MSVC but not on Windows
    Why would you even...

4)  Don't define strcasecmp if you're not even going to use it.

5)  Don't include Windows.h with undefs for compilers newer than
    1998 everywhere.

6)  Don't surpress warnings for MSVC++ 4.0. People still using
    MSVC++ 4.0 deserve it.

7)  Don't include things that are already included in Windows.h
2014-05-09 21:05:30 +02:00
Nicolas F
37bb8eec24 Don't ignore USE_INLINE on Windows 2014-05-09 20:14:46 +02:00
Nicolas F
d2fbc52d6c Change unsigned INT16 to UINT16
Addresses issue #642
2014-04-30 11:30:44 +02:00
Terseus
8eae39e98f Oops, added missing ';'
Now writing in the wall "don't push before compile" 100 times.
2014-04-04 19:20:29 +02:00
Terseus
2f6a4d5f1a Added missing free when xx fail 2014-04-04 18:57:08 +02:00
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
caf27c6908 merge from master 2014-03-31 15:47:52 -07: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
wiredfool
8ed7c9ad3f UNDONE -- are we using unistd.h? 2014-03-19 17:06:33 +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
Tom Payne
e414c66070 Add Image.alpha_composite 2012-12-04 16:44:26 +01:00
Lars Yencken
155347fe87 Fix a bug in quantize() causing PIL crashes.
From German Bravo's Image-SIG post:
http://mail.python.org/pipermail/image-sig/2012-June/007047.html
2012-09-05 13:23:57 +10:00
Matti Picus
2ba3bf681d UNDEF more types before including windows headers 2012-03-09 00:00:04 +02:00
Alex Clark
9a640e3157 Forking PIL 2010-07-30 22:52:47 -04:00