Fix vertically inverted rendering of PNG
This commit is contained in:
parent
6ad7260871
commit
c3ab6ff780
@ -266,7 +266,7 @@ inflate_png_inner(struct png_jmp_data *d, uint8_t *buf, size_t bufsz) {
|
||||
if (d->decompressed == NULL) ABRT(ENOMEM, "Out of memory allocating decompression buffer for PNG");
|
||||
d->row_pointers = malloc(d->height * sizeof(png_bytep));
|
||||
if (d->row_pointers == NULL) ABRT(ENOMEM, "Out of memory allocating row_pointers buffer for PNG");
|
||||
for (int i = 0; i < d->height; i++) d->row_pointers[d->height - 1 - i] = d->decompressed + i * rowbytes;
|
||||
for (int i = 0; i < d->height; i++) d->row_pointers[i] = d->decompressed + i * rowbytes;
|
||||
png_read_image(png, d->row_pointers);
|
||||
|
||||
d->ok = true;
|
||||
|
||||
@ -131,8 +131,9 @@ class TestGraphics(BaseTest):
|
||||
def test_load_png(self):
|
||||
s, g, l, sl = load_helpers(self)
|
||||
w, h = 5, 3
|
||||
img = Image.new('RGBA', (w, h), 'red')
|
||||
rgba_data = img.tobytes()
|
||||
rgba_data = os.urandom(w * h * 4)
|
||||
img = Image.frombytes('RGBA', (w, h), rgba_data)
|
||||
rgb_data = img.convert('RGB').convert('RGBA').tobytes()
|
||||
|
||||
def png(mode='RGBA'):
|
||||
buf = BytesIO()
|
||||
@ -142,9 +143,9 @@ class TestGraphics(BaseTest):
|
||||
i.save(buf, 'PNG')
|
||||
return buf.getvalue()
|
||||
|
||||
for mode in 'RGBA RGB P'.split():
|
||||
for mode in 'RGBA P RGB'.split():
|
||||
data = png(mode)
|
||||
sl(data, f=100, expecting_data=rgba_data)
|
||||
sl(data, f=100, expecting_data=rgb_data if mode == 'RGB' else rgba_data)
|
||||
|
||||
img = img.convert('L')
|
||||
rgba_data = img.convert('RGBA').tobytes()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user