Skip Menu |

This queue is for tickets about the Image-Imlib2 CPAN distribution.

Report information
The Basics
Id: 18233
Status: resolved
Priority: 0/
Queue: Image-Imlib2

People
Owner: Nobody in particular
Requestors: chris+rt [...] chrisdolan.net
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 1.08
Fixed in: (no value)



Subject: Output PNG size differs depending on loaded libraries
This is a truly bizarre bug that *I hope* is my fault. I've reproduced this on two Darwin boxes on Perl 5.8.6 and imlib2 v1.2.1 (built via Fink). The attached, simple test script draws a 24x24 pixel PNG showing a cursor (data from the Net::VNC project). The bizarre part is that depending on which libraries are "use"d, the output PNG file size varies. The test script controls which extra libraries are loaded via a command line switch. Here's sample output on my machine: % perl test_imlib.pl File size: 361 % perl test_imlib.pl 1 File size: 359 % perl test_imlib.pl 2 File size: 357 % perl test_imlib.pl 3 File size: 359 % perl test_imlib.pl 4 File size: 361 % perl test_imlib.pl 5 File size: 359 % perl test_imlib.pl 6 File size: 358 % perl test_imlib.pl 7 File size: 359 I've confirmed that repeating with the same command line argument on the smae machine does reproduce the same file size -- therefore it's not obviously a race condition or a time-variable phenomenon. However, the command run a different machine produces different file sizes (again, repeatably for that machine). Can anyone else reproduce this oddity? -- Chris
Attaching test script
#!/usr/bin/perl use strict; use warnings; use Image::Imlib2; BEGIN { my $num = shift || 0; $num & 1 and eval 'use Crypt::DES;'; $num & 2 and eval 'use IO::Socket::INET;'; $num & 4 and eval 'use bytes;'; } my $size = 24; my $image = Image::Imlib2->new($size,$size); while ($_=<DATA>) { my ($x,$y,$r,$g,$b,$a) = /(\d+)/g; $image->set_colour($r,$g,$b,$a); $image->draw_point($x,$y); } $image->save('cursor.png'); print "File size: ".(-s 'cursor.png')."\n"; __DATA__ 0, 0: 0 0 0 0 1, 0: 0 0 0 0 2, 0: 0 0 0 0 3, 0: 0 0 0 0 4, 0: 0 0 0 0 5, 0: 0 0 0 0 6, 0: 0 0 0 0 7, 0: 0 0 0 0 8, 0: 0 0 0 0 9, 0: 0 0 0 0 10, 0: 0 0 0 0 11, 0: 0 0 0 0 12, 0: 0 0 0 0 13, 0: 0 0 0 0 14, 0: 0 0 0 0 15, 0: 0 0 0 0 16, 0: 0 0 0 0 17, 0: 0 0 0 0 18, 0: 0 0 0 0 19, 0: 0 0 0 0 20, 0: 0 0 0 0 21, 0: 0 0 0 0 22, 0: 0 0 0 0 23, 0: 0 0 0 0 0, 1: 0 0 0 0 1, 1: 0 0 0 0 2, 1: 0 0 0 0 3, 1: 0 0 0 0 4, 1: 0 0 0 0 5, 1: 0 0 0 0 6, 1: 0 0 0 0 7, 1: 0 0 0 0 8, 1: 0 0 0 0 9, 1: 0 0 0 0 10, 1: 0 0 0 0 11, 1: 0 0 0 0 12, 1: 0 0 0 0 13, 1: 0 0 0 0 14, 1: 0 0 0 0 15, 1: 0 0 0 0 16, 1: 0 0 0 0 17, 1: 0 0 0 0 18, 1: 0 0 0 0 19, 1: 0 0 0 0 20, 1: 0 0 0 0 21, 1: 0 0 0 0 22, 1: 0 0 0 0 23, 1: 0 0 0 0 0, 2: 0 0 0 0 1, 2: 0 0 0 0 2, 2: 0 0 0 0 3, 2: 255 255 255 255 4, 2: 83 83 83 0 5, 2: 0 0 0 0 6, 2: 0 0 0 0 7, 2: 0 0 0 0 8, 2: 0 0 0 0 9, 2: 0 0 0 0 10, 2: 0 0 0 0 11, 2: 0 0 0 0 12, 2: 0 0 0 0 13, 2: 0 0 0 0 14, 2: 0 0 0 0 15, 2: 0 0 0 0 16, 2: 0 0 0 0 17, 2: 0 0 0 0 18, 2: 0 0 0 0 19, 2: 0 0 0 0 20, 2: 0 0 0 0 21, 2: 0 0 0 0 22, 2: 0 0 0 0 23, 2: 0 0 0 0 0, 3: 0 0 0 0 1, 3: 0 0 0 0 2, 3: 0 0 0 0 3, 3: 255 255 255 255 4, 3: 255 255 255 255 5, 3: 63 63 63 0 6, 3: 0 0 0 0 7, 3: 0 0 0 0 8, 3: 0 0 0 0 9, 3: 0 0 0 0 10, 3: 0 0 0 0 11, 3: 0 0 0 0 12, 3: 0 0 0 0 13, 3: 0 0 0 0 14, 3: 0 0 0 0 15, 3: 0 0 0 0 16, 3: 0 0 0 0 17, 3: 0 0 0 0 18, 3: 0 0 0 0 19, 3: 0 0 0 0 20, 3: 0 0 0 0 21, 3: 0 0 0 0 22, 3: 0 0 0 0 23, 3: 0 0 0 0 0, 4: 0 0 0 0 1, 4: 0 0 0 0 2, 4: 0 0 0 0 3, 4: 255 255 255 255 4, 4: 42 42 42 255 5, 4: 254 254 254 255 6, 4: 63 63 63 0 7, 4: 0 0 0 0 8, 4: 0 0 0 0 9, 4: 0 0 0 0 10, 4: 0 0 0 0 11, 4: 0 0 0 0 12, 4: 0 0 0 0 13, 4: 0 0 0 0 14, 4: 0 0 0 0 15, 4: 0 0 0 0 16, 4: 0 0 0 0 17, 4: 0 0 0 0 18, 4: 0 0 0 0 19, 4: 0 0 0 0 20, 4: 0 0 0 0 21, 4: 0 0 0 0 22, 4: 0 0 0 0 23, 4: 0 0 0 0 0, 5: 0 0 0 0 1, 5: 0 0 0 0 2, 5: 0 0 0 0 3, 5: 255 255 255 255 4, 5: 0 0 0 255 5, 5: 42 42 42 255 6, 5: 254 254 254 255 7, 5: 63 63 63 0 8, 5: 0 0 0 0 9, 5: 0 0 0 0 10, 5: 0 0 0 0 11, 5: 0 0 0 0 12, 5: 0 0 0 0 13, 5: 0 0 0 0 14, 5: 0 0 0 0 15, 5: 0 0 0 0 16, 5: 0 0 0 0 17, 5: 0 0 0 0 18, 5: 0 0 0 0 19, 5: 0 0 0 0 20, 5: 0 0 0 0 21, 5: 0 0 0 0 22, 5: 0 0 0 0 23, 5: 0 0 0 0 0, 6: 0 0 0 0 1, 6: 0 0 0 0 2, 6: 0 0 0 0 3, 6: 255 255 255 255 4, 6: 0 0 0 255 5, 6: 0 0 0 255 6, 6: 42 42 42 255 7, 6: 254 254 254 255 8, 6: 63 63 63 0 9, 6: 0 0 0 0 10, 6: 0 0 0 0 11, 6: 0 0 0 0 12, 6: 0 0 0 0 13, 6: 0 0 0 0 14, 6: 0 0 0 0 15, 6: 0 0 0 0 16, 6: 0 0 0 0 17, 6: 0 0 0 0 18, 6: 0 0 0 0 19, 6: 0 0 0 0 20, 6: 0 0 0 0 21, 6: 0 0 0 0 22, 6: 0 0 0 0 23, 6: 0 0 0 0 0, 7: 0 0 0 0 1, 7: 0 0 0 0 2, 7: 0 0 0 0 3, 7: 255 255 255 255 4, 7: 0 0 0 255 5, 7: 0 0 0 255 6, 7: 0 0 0 255 7, 7: 42 42 42 255 8, 7: 254 254 254 255 9, 7: 63 63 63 0 10, 7: 0 0 0 0 11, 7: 0 0 0 0 12, 7: 0 0 0 0 13, 7: 0 0 0 0 14, 7: 0 0 0 0 15, 7: 0 0 0 0 16, 7: 0 0 0 0 17, 7: 0 0 0 0 18, 7: 0 0 0 0 19, 7: 0 0 0 0 20, 7: 0 0 0 0 21, 7: 0 0 0 0 22, 7: 0 0 0 0 23, 7: 0 0 0 0 0, 8: 0 0 0 0 1, 8: 0 0 0 0 2, 8: 0 0 0 0 3, 8: 255 255 255 255 4, 8: 0 0 0 255 5, 8: 0 0 0 255 6, 8: 0 0 0 255 7, 8: 0 0 0 255 8, 8: 42 42 42 255 9, 8: 254 254 254 255 10, 8: 63 63 63 0 11, 8: 0 0 0 0 12, 8: 0 0 0 0 13, 8: 0 0 0 0 14, 8: 0 0 0 0 15, 8: 0 0 0 0 16, 8: 0 0 0 0 17, 8: 0 0 0 0 18, 8: 0 0 0 0 19, 8: 0 0 0 0 20, 8: 0 0 0 0 21, 8: 0 0 0 0 22, 8: 0 0 0 0 23, 8: 0 0 0 0 0, 9: 0 0 0 0 1, 9: 0 0 0 0 2, 9: 0 0 0 0 3, 9: 255 255 255 255 4, 9: 0 0 0 255 5, 9: 0 0 0 255 6, 9: 0 0 0 255 7, 9: 0 0 0 255 8, 9: 0 0 0 255 9, 9: 42 42 42 255 10, 9: 254 254 254 255 11, 9: 63 63 63 0 12, 9: 0 0 0 0 13, 9: 0 0 0 0 14, 9: 0 0 0 0 15, 9: 0 0 0 0 16, 9: 0 0 0 0 17, 9: 0 0 0 0 18, 9: 0 0 0 0 19, 9: 0 0 0 0 20, 9: 0 0 0 0 21, 9: 0 0 0 0 22, 9: 0 0 0 0 23, 9: 0 0 0 0 0, 10: 0 0 0 0 1, 10: 0 0 0 0 2, 10: 0 0 0 0 3, 10: 255 255 255 255 4, 10: 0 0 0 255 5, 10: 0 0 0 255 6, 10: 0 0 0 255 7, 10: 0 0 0 255 8, 10: 0 0 0 255 9, 10: 0 0 0 255 10, 10: 42 42 42 255 11, 10: 254 254 254 255 12, 10: 63 63 63 0 13, 10: 0 0 0 0 14, 10: 0 0 0 0 15, 10: 0 0 0 0 16, 10: 0 0 0 0 17, 10: 0 0 0 0 18, 10: 0 0 0 0 19, 10: 0 0 0 0 20, 10: 0 0 0 0 21, 10: 0 0 0 0 22, 10: 0 0 0 0 23, 10: 0 0 0 0 0, 11: 0 0 0 0 1, 11: 0 0 0 0 2, 11: 0 0 0 0 3, 11: 255 255 255 255 4, 11: 0 0 0 255 5, 11: 0 0 0 255 6, 11: 0 0 0 255 7, 11: 0 0 0 255 8, 11: 0 0 0 255 9, 11: 0 0 0 255 10, 11: 0 0 0 255 11, 11: 42 42 42 255 12, 11: 254 254 254 255 13, 11: 64 64 64 0 14, 11: 0 0 0 0 15, 11: 0 0 0 0 16, 11: 0 0 0 0 17, 11: 0 0 0 0 18, 11: 0 0 0 0 19, 11: 0 0 0 0 20, 11: 0 0 0 0 21, 11: 0 0 0 0 22, 11: 0 0 0 0 23, 11: 0 0 0 0 0, 12: 0 0 0 0 1, 12: 0 0 0 0 2, 12: 0 0 0 0 3, 12: 254 254 254 255 4, 12: 0 0 0 255 5, 12: 0 0 0 255 6, 12: 42 42 42 255 7, 12: 0 0 0 255 8, 12: 42 42 42 255 9, 12: 254 254 254 255 10, 12: 254 254 254 255 11, 12: 254 254 254 255 12, 12: 254 254 254 255 13, 12: 254 254 254 255 14, 12: 0 0 0 0 15, 12: 0 0 0 0 16, 12: 0 0 0 0 17, 12: 0 0 0 0 18, 12: 0 0 0 0 19, 12: 0 0 0 0 20, 12: 0 0 0 0 21, 12: 0 0 0 0 22, 12: 0 0 0 0 23, 12: 0 0 0 0 0, 13: 0 0 0 0 1, 13: 0 0 0 0 2, 13: 0 0 0 0 3, 13: 254 254 254 255 4, 13: 0 0 0 255 5, 13: 42 42 42 255 6, 13: 185 185 185 255 7, 13: 42 42 42 255 8, 13: 0 0 0 255 9, 13: 137 137 137 255 10, 13: 158 158 158 255 11, 13: 0 0 0 0 12, 13: 0 0 0 0 13, 13: 0 0 0 0 14, 13: 0 0 0 0 15, 13: 0 0 0 0 16, 13: 0 0 0 0 17, 13: 0 0 0 0 18, 13: 0 0 0 0 19, 13: 0 0 0 0 20, 13: 0 0 0 0 21, 13: 0 0 0 0 22, 13: 0 0 0 0 23, 13: 0 0 0 0 0, 14: 0 0 0 0 1, 14: 0 0 0 0 2, 14: 0 0 0 0 3, 14: 254 254 254 255 4, 14: 42 42 42 255 5, 14: 254 254 254 255 6, 14: 157 157 157 255 7, 14: 136 136 136 255 8, 14: 0 0 0 255 9, 14: 42 42 42 255 10, 14: 254 254 254 255 11, 14: 0 0 0 0 12, 14: 0 0 0 0 13, 14: 0 0 0 0 14, 14: 0 0 0 0 15, 14: 0 0 0 0 16, 14: 0 0 0 0 17, 14: 0 0 0 0 18, 14: 0 0 0 0 19, 14: 0 0 0 0 20, 14: 0 0 0 0 21, 14: 0 0 0 0 22, 14: 0 0 0 0 23, 14: 0 0 0 0 0, 15: 0 0 0 0 1, 15: 0 0 0 0 2, 15: 0 0 0 0 3, 15: 254 254 254 255 4, 15: 254 254 254 255 5, 15: 0 0 0 0 6, 15: 0 0 0 0 7, 15: 254 254 254 255 8, 15: 42 42 42 255 9, 15: 0 0 0 255 10, 15: 140 140 140 255 11, 15: 176 176 176 255 12, 15: 0 0 0 0 13, 15: 0 0 0 0 14, 15: 0 0 0 0 15, 15: 0 0 0 0 16, 15: 0 0 0 0 17, 15: 0 0 0 0 18, 15: 0 0 0 0 19, 15: 0 0 0 0 20, 15: 0 0 0 0 21, 15: 0 0 0 0 22, 15: 0 0 0 0 23, 15: 0 0 0 0 0, 16: 0 0 0 0 1, 16: 0 0 0 0 2, 16: 0 0 0 0 3, 16: 254 254 254 255 4, 16: 0 0 0 0 5, 16: 0 0 0 0 6, 16: 0 0 0 0 7, 16: 166 166 166 255 8, 16: 138 138 138 255 9, 16: 0 0 0 255 10, 16: 42 42 42 255 11, 16: 193 193 193 255 12, 16: 0 0 0 0 13, 16: 0 0 0 0 14, 16: 0 0 0 0 15, 16: 0 0 0 0 16, 16: 0 0 0 0 17, 16: 0 0 0 0 18, 16: 0 0 0 0 19, 16: 0 0 0 0 20, 16: 0 0 0 0 21, 16: 0 0 0 0 22, 16: 0 0 0 0 23, 16: 0 0 0 0 0, 17: 0 0 0 0 1, 17: 0 0 0 0 2, 17: 0 0 0 0 3, 17: 0 0 0 0 4, 17: 0 0 0 0 5, 17: 0 0 0 0 6, 17: 0 0 0 0 7, 17: 0 0 0 0 8, 17: 254 254 254 255 9, 17: 42 42 42 255 10, 17: 0 0 0 255 11, 17: 254 254 254 255 12, 17: 0 0 0 0 13, 17: 0 0 0 0 14, 17: 0 0 0 0 15, 17: 0 0 0 0 16, 17: 0 0 0 0 17, 17: 0 0 0 0 18, 17: 0 0 0 0 19, 17: 0 0 0 0 20, 17: 0 0 0 0 21, 17: 0 0 0 0 22, 17: 0 0 0 0 23, 17: 0 0 0 0 0, 18: 0 0 0 0 1, 18: 0 0 0 0 2, 18: 0 0 0 0 3, 18: 0 0 0 0 4, 18: 0 0 0 0 5, 18: 0 0 0 0 6, 18: 0 0 0 0 7, 18: 0 0 0 0 8, 18: 167 167 167 255 9, 18: 254 254 254 255 10, 18: 254 254 254 255 11, 18: 170 170 170 255 12, 18: 0 0 0 0 13, 18: 0 0 0 0 14, 18: 0 0 0 0 15, 18: 0 0 0 0 16, 18: 0 0 0 0 17, 18: 0 0 0 0 18, 18: 0 0 0 0 19, 18: 0 0 0 0 20, 18: 0 0 0 0 21, 18: 0 0 0 0 22, 18: 0 0 0 0 23, 18: 0 0 0 0 0, 19: 0 0 0 0 1, 19: 0 0 0 0 2, 19: 0 0 0 0 3, 19: 0 0 0 0 4, 19: 0 0 0 0 5, 19: 0 0 0 0 6, 19: 0 0 0 0 7, 19: 0 0 0 0 8, 19: 0 0 0 0 9, 19: 0 0 0 0 10, 19: 0 0 0 0 11, 19: 0 0 0 0 12, 19: 0 0 0 0 13, 19: 0 0 0 0 14, 19: 0 0 0 0 15, 19: 0 0 0 0 16, 19: 0 0 0 0 17, 19: 0 0 0 0 18, 19: 0 0 0 0 19, 19: 0 0 0 0 20, 19: 0 0 0 0 21, 19: 0 0 0 0 22, 19: 0 0 0 0 23, 19: 0 0 0 0 0, 20: 0 0 0 0 1, 20: 0 0 0 0 2, 20: 0 0 0 0 3, 20: 0 0 0 0 4, 20: 0 0 0 0 5, 20: 0 0 0 0 6, 20: 0 0 0 0 7, 20: 0 0 0 0 8, 20: 0 0 0 0 9, 20: 0 0 0 0 10, 20: 0 0 0 0 11, 20: 0 0 0 0 12, 20: 0 0 0 0 13, 20: 0 0 0 0 14, 20: 0 0 0 0 15, 20: 0 0 0 0 16, 20: 0 0 0 0 17, 20: 0 0 0 0 18, 20: 0 0 0 0 19, 20: 0 0 0 0 20, 20: 0 0 0 0 21, 20: 0 0 0 0 22, 20: 0 0 0 0 23, 20: 0 0 0 0 0, 21: 0 0 0 0 1, 21: 0 0 0 0 2, 21: 0 0 0 0 3, 21: 0 0 0 0 4, 21: 0 0 0 0 5, 21: 0 0 0 0 6, 21: 0 0 0 0 7, 21: 0 0 0 0 8, 21: 0 0 0 0 9, 21: 0 0 0 0 10, 21: 0 0 0 0 11, 21: 0 0 0 0 12, 21: 0 0 0 0 13, 21: 0 0 0 0 14, 21: 0 0 0 0 15, 21: 0 0 0 0 16, 21: 0 0 0 0 17, 21: 0 0 0 0 18, 21: 0 0 0 0 19, 21: 0 0 0 0 20, 21: 0 0 0 0 21, 21: 0 0 0 0 22, 21: 0 0 0 0 23, 21: 0 0 0 0 0, 22: 0 0 0 0 1, 22: 0 0 0 0 2, 22: 0 0 0 0 3, 22: 0 0 0 0 4, 22: 0 0 0 0 5, 22: 0 0 0 0 6, 22: 0 0 0 0 7, 22: 0 0 0 0 8, 22: 0 0 0 0 9, 22: 0 0 0 0 10, 22: 0 0 0 0 11, 22: 0 0 0 0 12, 22: 0 0 0 0 13, 22: 0 0 0 0 14, 22: 0 0 0 0 15, 22: 0 0 0 0 16, 22: 0 0 0 0 17, 22: 0 0 0 0 18, 22: 0 0 0 0 19, 22: 0 0 0 0 20, 22: 0 0 0 0 21, 22: 0 0 0 0 22, 22: 0 0 0 0 23, 22: 0 0 0 0 0, 23: 0 0 0 0 1, 23: 0 0 0 0 2, 23: 0 0 0 0 3, 23: 0 0 0 0 4, 23: 0 0 0 0 5, 23: 0 0 0 0 6, 23: 0 0 0 0 7, 23: 0 0 0 0 8, 23: 0 0 0 0 9, 23: 0 0 0 0 10, 23: 0 0 0 0 11, 23: 0 0 0 0 12, 23: 0 0 0 0 13, 23: 0 0 0 0 14, 23: 0 0 0 0 15, 23: 0 0 0 0 16, 23: 0 0 0 0 17, 23: 0 0 0 0 18, 23: 0 0 0 0 19, 23: 0 0 0 0 20, 23: 0 0 0 0 21, 23: 0 0 0 0 22, 23: 0 0 0 0 23, 23: 0 0 0 0
Attaching a slightly corrupted PNG that originally led me to investigate this problem.
Download cursor.png
image/png 443b
cursor.png
On Sat Mar 18 14:43:55 2006, guest wrote: Show quoted text
> The attached, simple test script draws a 24x24 pixel PNG showing a > cursor (data from the Net::VNC project). The bizarre part is that > depending on which libraries are "use"d, the output PNG file size varies.
That is weird. I can reproduce it too. (imlib2 1.2.1). Hmmmm.....
This was because ->new has random data in it by default. Image::Imlib2 2.03 has a new_transparent($w, $h) method for this exact use case. Sorry for the delay! Leon