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

标签 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

最佳答案

您需要 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/

相关文章:

python - 调整图像大小时像素会发生什么变化?

ruby - 如何修改图像的颜色以消除活力?

ruby-on-rails - Capybara::ElementNotFound:无法找到任何 css 元素

Ruby-什么时候执行 block ?

ruby-on-rails - 如何在 Rails 中仅获取 GET 和 POST 参数作为哈希值?

css - 使用 CSS 属性从 Sprite 裁剪 Logo

ruby - ruby 如何知道在 require "rspec"中找到 rspec

image - Magento:自定义模块中的所见即所得,图像链接不正确

css - 部分中的响应图像