在 CSS 或 JavaScript 中反转图像的颜色

Posted

技术标签:

【中文标题】在 CSS 或 JavaScript 中反转图像的颜色【英文标题】:Invert colors of an image in CSS or JavaScript 【发布时间】:2012-10-30 19:39:38 【问题描述】:

如果可能,我如何在 css 或 javascript 中反转图像 (jpg/png..) 的颜色?

Previousrelated 问题不够详细。

【问题讨论】:

可以使用html5画布。见this tutorial。 【参考方案1】:

CSS3 有一个新的过滤器属性只能在 webkit 浏览器中使用 supported 在 webkit 浏览器和 Firefox 中。它在 IE 或 Opera mini 中不支持:

img 
   -webkit-filter: invert(1);
   filter: invert(1);
   
<img src="http://i.imgur.com/1H91A5Y.png">

【讨论】:

不适用于 Firefox 16.0.2。但是here 我发现这可以工作:filter: url(data:image/svg+xml;base64,PHN2Z...<long address>...PC9zdmc+#invert);,可以吗? 那是因为 firefox 不是 webkit。您需要检查浏览器是否为 webkit,否则通过 base64 转换进行反转。 你说得对,它在 Chrome 中确实有效。我很确定这应该在 Firefox 中工作,如 here: filter: url("data:image/svg+xml;utf8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='blur'><feGaussianBlur stdDeviation='5' /></filter></svg>"); 所说,但它没有......任何想法? 不错,但是很崩溃。它会反转颜色,但是当我将鼠标移到我的页面上时,选项卡会崩溃。用 Google Chrome 25.0.1364.172 x86_64 Linux 试了一下。 作为旁注,可以考虑使用 contrast(0.1)` 过滤器。【参考方案2】:

可以使用下面的代码在主要的新浏览器中完成

.img 
    -webkit-filter:invert(100%);
     filter:progid:DXImageTransform.Microsoft.BasicImage(invert='1');

但是,如果您希望它可以在所有浏览器上运行,则需要使用 Javascript。像this gist 这样的东西就可以完成这项工作。

【讨论】:

【参考方案3】:

您可以通过 javascript 应用样式。这是下面的 Js 代码,它将过滤器应用于 ID 为 theImage 的图像。

function invert()
document.getElementById("theImage").style.filter="invert(100%)";

这就是

<img id="theImage" class="img-responsive" src="http://i.imgur.com/1H91A5Y.png"></img>

现在你需要做的就是调用 invert() 我们在点击图片时执行此操作。

function invert()
document.getElementById("theImage").style.filter="invert(100%)";
<h4> Click image to invert </h4>

<img id="theImage" class="img-responsive" src="http://i.imgur.com/1H91A5Y.png" onClick="invert()" ></img>

我们在website 上使用它

【讨论】:

【参考方案4】:

对于从 0 到 1 的反转,您可以使用这个库 InvertImages,它提供对 IE 10 的支持。我还使用 IE 11 进行了测试,它应该可以工作。

【讨论】:

以上是关于在 CSS 或 JavaScript 中反转图像的颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用css反转svg图像?

是否可以使用 javascript 和/或 css 修改背景 svg 图像?

将鼠标悬停在Javascript和/或CSS列表中的相应单词时,如何显示不同的图像?

使用 css 裁剪或缩放图像

灰度图像反转和彩色图像反转

在使用 CSS 加载或破坏图像源时操作图像占位符