mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 09:56:17 +03:00
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.
This commit is contained in:
parent
dea45dafcb
commit
147a0204eb
|
@ -32,10 +32,10 @@
|
||||||
typedef struct _ColorBucket{
|
typedef struct _ColorBucket{
|
||||||
/* contains palette index when used for look up cube */
|
/* contains palette index when used for look up cube */
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
uint32_t r;
|
uint64_t r;
|
||||||
uint32_t g;
|
uint64_t g;
|
||||||
uint32_t b;
|
uint64_t b;
|
||||||
uint32_t a;
|
uint64_t a;
|
||||||
} *ColorBucket;
|
} *ColorBucket;
|
||||||
|
|
||||||
typedef struct _ColorCube{
|
typedef struct _ColorCube{
|
||||||
|
@ -262,7 +262,7 @@ set_lookup_value(const ColorCube cube, const Pixel *p, long value) {
|
||||||
bucket->count = value;
|
bucket->count = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint64_t
|
||||||
lookup_color(const ColorCube cube, const Pixel *p) {
|
lookup_color(const ColorCube cube, const Pixel *p) {
|
||||||
ColorBucket bucket = color_bucket_from_cube(cube, p);
|
ColorBucket bucket = color_bucket_from_cube(cube, p);
|
||||||
return bucket->count;
|
return bucket->count;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user