在Rmagick中使用8位读取无法正常工作?

时间:2014-08-06 01:18:08

标签: imagemagick rmagick

我使用编译为16位的ImageMagick进行Rmagick。

但是,我可以通过这样做来读取文件:

file = Magick::Image.read(my_file){self.depth = 8}.first

在检查该文件时,我发现它是

PNG 1400x768 1400x768+0+0 DirectClass 8-bit 333kb

但是,当访问任何像素时,值大于0-255。

为什么?我错过了什么?

我这样访问:

red = image.pixel_color(x,y).red 

我不明白为什么这个值会从0到2 ^ 16,当我特意打开8位深度的图像时。

1 个答案:

答案 0 :(得分:0)

您使用的ImageMagick版本是Q16(16位)。这意味着ImageMagick将始终在内部使用无符号短路来存储像素的通道。如果所有图像都是8位,您可以切换到ImageMagick的Q8版本。有关ImageMagick架构的更多信息,请访问:http://www.imagemagick.org/script/architecture.php