我正在使用 Perl 和 Image::Magick 模块来处理一些 JPEG。
我正在使用 GetPixels 子来获取每个像素的 RGB 分量。
例如
my @pixels = $img->GetPixels(
width => 1,
height => 1,
x => 0,
y => 0,
map => 'RGB',
#normalize => 1
)
print Dumper \@pixels;
$img->Resize(
width => 1,
height => 1,
filter => 'Lanczos'
);
@pixels = $img->GetPixels(
width => 1,
height => 1,
x => 0,
y => 0,
map => 'RGB',
#normalize => 1
);
print Dumper \@pixels;
$img->Write('verify.jpg');
我发现 getPixels 每个通道返回两个字节,例如
$VAR1 = [
46260,
45232,
44975
];
$VAR1 = [
58271,
58949,
60330
];
在调用Resize之前:(本例中)指定像素的颜色为#b4b0af,返回值为0xB4B4、0xB0B0、0xAFAF。我不明白为什么会这样,但我可以使用 MOD 256 处理它;
但是在调用 Resize 之后,返回的值与我在输出文件 (verify.jpg) 中找到的实际值没有任何明显的对应关系。
Image::Magick 是否只是超精确(考虑短裤而不是字节)?
JPEG 压缩是否解释了第二个 Dumper 输出与“verify.jpg”内容之间的差异?