我正在使用 ChunkyPNG 来获取图像上像素的颜色。当图像根本没有背景颜色,并呈现到浏览器中时,背景颜色将变为白色(通常,取决于您的浏览器配置)。
我的问题是,当使用 ChunkyPNG 分析像素时,完全没有颜色的像素值是 rgb(0,0,0)
,黑色像素的值为 rgb(0,0,0)
。有什么办法可以区分这些吗?检查不透明度或...我错过了什么?
这是我的代码:
chunky_image = ChunkyPNG::Image.from_file("test.png")
width = chunky_image.dimension.width
height = chunky_image.dimension.height
(0..width - 1).each do |x|
(0..height- 1).each do |y|
red = ChunkyPNG::Color.r(chunky_image[x,y])
green = ChunkyPNG::Color.g(chunky_image[x,y])
blue = ChunkyPNG::Color.b(chunky_image[x,y])
p "red: " + red.to_s
p "green: " + green.to_s
p "ble: " + blue.to_s
end
end
最佳答案
您需要 rgba 值而不是 rgb 值。
如果 r,g,b 为 0 且 a 为 255 则为纯黑色
如果 r,g,b 为 0 并且 a > 0 但 < 255 它仍然是黑色但或多或少是透明的
如果a为0,不管r,g,b是什么都是全透明的(你的话没有颜色)
所以您错过的是 Color.a(pixel) 值。希望你的照片有 COLOR_TRUECOLOR_ALPHA
关于ruby - 如何区分没有颜色的像素和黑色像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080801/