使用 Perl GD 更改像素颜色

问题描述 投票:0回答:1

我正在尝试更改 PNG 文件中某些像素的颜色。作为测试,以下脚本应读取 (256x256) PNG 文件,在其上绘制红色对角线,并将生成的图像写入文件。有一条对角线,但它是白色的。我错过了什么?

#!/usr/bin/env perl

use GD;

$in_file = "in_file.png";

open($PNG,"<$in_file");
$im = newFromPng GD::Image($PNG) or die "Cannot open $in_file for importing";
close($PNG);

$red = $im->colorAllocate(255,0,0);

for($i=0;$i<256;$i++) {
 $im->setPixel($i,$i,$red);
}

$out_file = "out_file.png";

open($IF,">$out_file") or die "Cannot open $out_file for writing?";
binmode $IF;
print $IF $im->png();
close($IF);
perl pixel gd
1个回答
0
投票

在 Ubuntu 23.10 上测试:首先我创建了一个空白的蓝色图像:

convert -size 256x256 xc:blue in_file.png

使用以下脚本:

#! /usr/bin/env perl

use v5.38;
use GD;

my $in_file = "in_file.png";
my $out_file = "out_file.png";
my $im = GD::Image->newFromPng($in_file) or die "Cannot open $in_file for importing";
my $red = $im->colorAllocate(255,0,0);
for(my $i=0; $i<256; $i++) {
    $im->setPixel($i,$i,$red);
}
open(my $IF,">:raw", $out_file) or die "Cannot open $out_file for writing";
print $IF $im->png();
close($IF);

结果:

© www.soinside.com 2019 - 2024. All rights reserved.