如何区分没有颜色的像素和黑色像素?

Joh*_*Red 4 ruby image chunkypng

我正在使用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
Run Code Online (Sandbox Code Playgroud)

Mar*_*nck 5

您需要rgba值而不是rgb值.

如果r,g,b为0且a为255,则为纯黑色

如果r,g,b为0且a> 0但<255,则它仍然是黑色但是或多或少透明

如果a为0,无论r,g,b是完全透明的(你的话中没有颜色)

所以你错过的是Color.a(像素)值.希望你的照片有COLOR_TRUECOLOR_ALPHA