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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |