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