У меня есть изображение с разными цветами. В Adobe Photoshop мое изображение отфильтровано с помощью интеллектуального фильтра, который добавляет к изображению оттенок, насыщенность, яркость. Поэтому мне нужно изменить все цвета на изображении на оттенок синего. Но в css функция hue-rotate() поворачивает все цвета, но мне нужно установить один цвет и изменить некоторую насыщенность и яркость. Это исходное изображение: Мне нужно получить это:
Как я могу установить один цвет оттенка на изображении с фильтром CSS?
Как изменить оттенок изображения с разными цветами с помощью фильтра CSS на оттенок синего
Ответы (2)
Вы можете рассмотреть mix-blend-mode
свойство.
С псевдоэлементами и фоновым изображением:
.img {
background-image: url("https://i.stack.imgur.com/lMWO8.png");
width: 1280px;
height: 302px;
position: relative;
}
.img::before, .img::after {
content: '';
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.img::before {
background-color: gray;
mix-blend-mode: color;
}
.img::after {
mix-blend-mode: overlay;
background-color: green;
}
<div class="img"></div>
Или теги img.
.cont {
position: relative;
width: 1280px;
height: 302px;
}
.origin, .color-overlay--1, .color-overlay--2 {
position: absolute;
left:0;
top:0;
width: 100%;
height: 100%;
}
.origin {
z-index:1;
}
.color-overlay--1 {
z-index:2;
background-color:gray;
mix-blend-mode:color;
}
.color-overlay--2 {
z-index:3;
mix-blend-mode:overlay;
background-color:#98aeea;
}
<div class="cont">
<img src="https://i.stack.imgur.com/lMWO8.png" alt="" class="origin">
<div class="color-overlay--1"></div>
<div class="color-overlay--2"></div>
</div>
Таким образом, вы можете превратить его в любой цвет, который вы хотите.
.cont {
position: relative;
width: 1280px;
height: 302px;
}
.origin, .color-overlay--1, .color-overlay--2 {
position: absolute;
left:0;
top:0;
width: 100%;
height: 100%;
}
.origin {
z-index:1;
}
.color-overlay--1 {
z-index:2;
background-color:gray;
mix-blend-mode:color;
}
.color-overlay--2 {
z-index:3;
mix-blend-mode:overlay;
background-color:red;
}
<div class="cont">
<img src="https://i.stack.imgur.com/lMWO8.png" alt="" class="origin">
<div class="color-overlay--1"></div>
<div class="color-overlay--2"></div>
</div>
person
doğukan
schedule
04.08.2019
о, у меня есть еще один вопрос. Как я могу сделать это с прозрачным изображением? Я не хочу видеть синий фон на прозрачной области
- person Vsevolod Fedorov; 04.08.2019
@VsevolodFedorov, вы можете сделать их непрозрачными?
- person doğukan; 04.08.2019
Вы можете комбинировать фильтр сепии с поворотом оттенка, чтобы приблизить его:
img {
max-width:100%;
filter:sepia(1) hue-rotate(149deg);
}
<img src="https://i.stack.imgur.com/lMWO8.png">
person
Temani Afif
schedule
04.08.2019
о, это хорошая идея, но как я могу вычислить свойства, чтобы получить тот же результат, что и в фотошопе?
- person Vsevolod Fedorov; 04.08.2019
@VsevolodFedorov тут становится сложно :) нужно копаться в сложном расчете, чтобы найти формулу, или делаешь это банально и с ошибками, пока не получишь нужный результат
- person Temani Afif; 04.08.2019