【问题标题】:Determine if image is Grayscale or Color using JavaScript?使用 JavaScript 确定图像是灰度还是彩色?
【发布时间】:2012-01-09 21:56:49
【问题描述】:

是否可以使用 JavaScript 确定给定图像是灰度还是彩色?

【问题讨论】:

  • 使用canvas元素,遍历所有像素,检查R=G=B。
  • 这里有一些 jscript 中的code to analyze 图像颜色,可能会对您有所帮助!
  • @Leon - jscript 和 javascript 是不同的语言,虽然你的链接是一个 javascript 答案。
  • @AshBurlaczenko - 抱歉,JS、JavaScript、JScript 用于谈论 JAVASCRIPT 编程语言。如果您指的是 JScript.NET,那确实是一个不同的 ;-)
  • @Leon - JScript 由 mircosoft 开发,而 JavaScript 最初由 Netscape 开发。 javascript.about.com/od/reference/a/jscript.htm

标签: javascript image colors grayscale


【解决方案1】:
  1. 将图像绘制到画布

  2. 循环遍历图像数据

  3. 测试每个像素,如果 red-cahnnel == green-channel == blue-channel(所有颜色通道具有相同的值)

如果所有像素都为真,则为灰度,如果您击中第一个不符合条件的像素,则可以停止,它是彩色的。

【讨论】:

  • 是的,仅适用于 HTML5(或支持画布对象的浏览器),但如果您不能对图像执行任何操作,那么知道图像是否为灰度是否有意义?如果您只想在网站上显示所用色彩空间的元信息,您可以使用一些服务器端程序(如 imagemagick)或一些 java 东西来确定色彩空间。
【解决方案2】:

看看http://www.pixastic.com/lib/docs/actions/colorhistogram/

这将很容易提供您确定这一点所需的数据。

【讨论】:

  • 完美!我发现如果图像是灰度的,返回的 RGB 值是相同的。例如,对于 rval,灰度图像将返回类似 (9445,534,501,508,442,448...),对于 gval,返回 (9445,534,501,508,442,448...),对于 bval,返回 (9445,534,501,508,442,448...)。另一方面,彩色图像将返回 (1,3,5,3,8...), (1,2,3,0,3...) 和 (1,2,3,0,3 ...) 分别。非常感谢您的帮助!
  • 这是使用该库的廉价解决方案:(我放弃了尝试格式化。我是一个frickin noob。射击我。有人会解决这个问题。对不起我的无知。)函数isGrayscale( img) { var histret = {}; Pixastic.process(document.getElementById(img), "colorhistogram", {paint:true, returnValue:histret});返回 ((histret.rvals.toString() == histret.gvals.toString()) && (histret.gvals.toString() == histret.bvals.toString())); }
猜你喜欢
  • 2021-12-13
  • 2014-07-18
  • 1970-01-01
  • 2013-12-02
  • 2013-03-13
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多