当我试图从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