Imagemagick 在Rmagick中读取8位数据';你不能正常工作吗?

Imagemagick 在Rmagick中读取8位数据';你不能正常工作吗?,imagemagick,rmagick,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).

我使用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 

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

您使用的ImageMagick版本是Q16(16位)。这意味着ImageMagick将始终在内部使用无符号短字符来存储像素通道。如果所有图像都是8位的,则可以切换到ImageMagick的Q8版本。有关ImageMagick体系结构的更多信息,请参见此处:

需要了解如何访问像素。我猜像素值不是0-255,而是更多的0-。