Perl GD Library - 闪烁的PNG输出

时间:2012-08-08 12:02:32

标签: perl png gd libpng

当我试图从Perl的GD组件(版本2.46,http://metacpan.org/pod/GD)获取PNG输出时,使用ImageMagick打开时生成的图像会闪烁。通过GIF导出也可以获得相同的行为,但不是JPEG

我使用的示例代码如下:

#!/usr/bin/perl                                                                                                 

use GD;
$width = 750;
$height = 600;
$im = new GD::Image($width,$height);

$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
@colors = ();
open(RGB,"heatmap.lut") || die "Cannot open LUT file!";
@colorLines = <RGB>;
close RGB;
foreach my $color (@colorLines){
    $color =~ s/[\r\n]//g;
    push @colors, $im->colorAllocate(split(/\t/,$color));
}
$im->transparent($white);
$im->interlaced('false');
$counterY = 0;
for (my $y=0;$y<600;$y+=30){
    $counterX=0;
    for (my $x=0;$x<750;$x+=30){
        $randnum = int(rand(26));
        $im->filledRectangle($x+1,$y+1,$x+29,$y+29,$colors[$randnum]);
        $counterX++;
    }
    $counterY++;
}

open(TOPNG,">test.png") || die;
binmode TOPNG;
print TOPNG $im->png;
close TOPNG;

可以在以下链接中看到显示此闪烁行为的视频:http://youtu.be/EErvl8E7ijc。 它没有在视频中清晰地显示,但有时候,我想最初绘制的图像是在那些闪烁之间看到的。

当我通过“识别”命令进一步研究png时,我发现它是在PsuedoClass而不是常规的DirectClass输出,而是来自常规的png。

为什么会发生这种情况或如何解决这个问题?

非常感谢!

更多信息:

我工作的远程服务器:红帽企业Linux服务器版本6.3(圣地亚哥)

我用来连接的主机系统:Mac OSX Mountain Lion和XQuartz 2.7.2

libpng版本:1.5.11

ImageMagick版本:6.5.4-7 2012-04-10 Q16

编辑: heatmap.lut文件可在此处找到:http://pastebin.com/vgw5MnTD

0 个答案:

没有答案