使用 ImageMagick 和 Rails 进行像素 RGB
我目前正在使用 PaperClip 和 ImageMagick 上传图像。我想获得图像的平均颜色,所以我这样做(使用 before_create 挂钩):
def get_average_color
img = Magick::Image.read(self.url).first
pix = img.scale(1, 1)
averageColor = pix.pixel_color(0,0)
end
这有效,但是当我尝试打印像素颜色时,我得到它们是这样的:
red=36722, green=44474, blue=40920, opacity=0
如何将这些 RGB 值转换为常规( 0-255) RGB 值。我只是修改它们吗?提前致谢。
I'm currently uploading an image with PaperClip and ImageMagick. I would like to get the image's average color so I'm doing this (with a before_create hook):
def get_average_color
img = Magick::Image.read(self.url).first
pix = img.scale(1, 1)
averageColor = pix.pixel_color(0,0)
end
This works but when I try to print the pixel colors out I get them like this:
red=36722, green=44474, blue=40920, opacity=0
How can I get these RGB values into regular (0-255) RGB values. Do I just mod them? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 ImageMagick 是以 16 位量子深度编译的,并且您需要 8 位值,
您可以使用按位运算:
按位运算更快;)
您也可以使用这种方式:
现在一点数学:
If ImageMagick is compiled with a quantum depth of 16 bits, and you need the 8 bit values,
you can use bitwise operation:
Bitwise operation are much more faster ;)
You can use also this way:
Now a little bit of Math:
您可以使用此方法轻松获得 8 位编码颜色:
您可以在 https://rmagick 获取更多详细信息.github.io/struct.html(to_color 段落)
You can easily get 8-bit encoded color using this approach:
You can get more details at https://rmagick.github.io/struct.html (to_color paragraph)
您的 ImageMagick 编译为 16 位量子深度,而不是 8 位。请参阅这篇文章 在 RMagick 提示和中提示论坛了解更多信息。
Your ImageMagick is compiled for a quantum depth of 16 bits, versus 8 bits. See this article in the RMagick Hints & Tips Forum for more information.