当我试图从 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。它在视频中没有清楚地显示,但有时,我想在这些闪烁之间看到我最初绘制的图像。
当我通过“ identify ”命令进一步调查 png 时,我发现它在 PsuedoClass 中,而不是从常规 png 获得的常规 DirectClass 输出。
任何想法为什么会发生这种情况或如何解决?
非常感谢!
更多信息:
我工作的远程服务器:Red Hat Enterprise Linux Server release 6.3 (Santiago)
我用来连接的主机系统: Mac OSX Mountain Lion with XQuartz 2.7.2
libpng 版本:1.5.11
ImageMagick 版本:6.5.4-7 2012-04-10 Q16
编辑: heatmap.lut
文件可以在这里找到:http: //pastebin.com/vgw5MnTD