1

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

4

0 回答 0