加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:06:15 所属栏目:百科 来源:网络整理
导读:我正在使用ChunkyPNG来获取图像上的像素颜色.当图像完全没有背景颜色并渲染到浏览器中时,背景颜色将变为白色(通常取决于您的浏览器配置). 我的问题是,当使用ChunkyPNG分析像素时,完全没有颜色的像素的值是rgb(0,0),而黑色像素的值是rgb(0,0) ).有什么方法可
我正在使用ChunkyPNG来获取图像上的像素颜色.当图像完全没有背景颜色并渲染到浏览器中时,背景颜色将变为白色(通常取决于您的浏览器配置).

我的问题是,当使用ChunkyPNG分析像素时,完全没有颜色的像素的值是rgb(0,0),而黑色像素的值是rgb(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,b为0且a> 0但是< 255它仍然是黑色但是或多或少透明 如果a为0,无论r,b是完全透明的(你的话中没有颜色) 所以你错过的是Color.a(像素)值.希望你的照片有COLOR_TRUECOLOR_ALPHA

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读