2012-11-10 2 views
48

Как инвертировать цвета изображения (jpg/png ..) в css, если возможно, или javascript?Инвертировать цвета изображения в CSS или JavaScript

Previousrelated вопросы не дают достаточно деталей.

+1

Вы можете использовать html5 холст. См. [Этот учебник] (http://www.html5canvastutorials.com/advanced/html5-canvas-invert-image-colors-tutorial/). – user197508

ответ

111

CSS3 имеет новый атрибут фильтра который будет работать только в браузерах webkitsupported в браузерах webkit и в Firefox. Она не имеет поддержки в IE или Opera Mini:

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

+0

Не работает в Firefox 16.0.2. Но [здесь] (http://forum.userstyles.org/discussion/32770/inverting-map-images/p1) Я обнаружил, что это может сработать: 'filter: url (data: image/svg + xml; base64, PHN2Z. .. <длинный адрес> ... PC9zdmc + # инвертировать); ', не так ли? – laggingreflex

+4

Ну, это потому, что firefox не webkit. Вам нужно будет сделать проверку, если браузер - webkit, а также инверсия через преобразование base64. – toxicate20

+2

Вы правы, он работает в Chrome. Я уверен, что это должно работать в Firefox, как сказано [здесь] (https://developer.mozilla.org/en-US/docs/CSS/filter): 'filter: url (" data: image/svg + xml ; utf8, "); 'но это не ... какие-то идеи? – laggingreflex

10

Может быть сделана в новом крупном broswers используя код ниже

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

Однако, если вы хотите работать во всех браузерах вам нужно использовать Javascript. Что-то вроде this gist сделает эту работу.

0

Для инверсии от 0 до 1 и обратно вы можете использовать эту библиотеку InvertImages, которая обеспечивает поддержку IE 10. Я также тестировал с IE 11, и он должен работать.

1

Вы можете применить стиль через javascript. Js ниже.

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

И это HTML

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

Теперь все, что вам нужно сделать, это инвертировать вызов()

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>

Смежные вопросы