Как изменить оттенок изображения с разными цветами с помощью фильтра CSS на оттенок синего

У меня есть изображение с разными цветами. В Adobe Photoshop мое изображение отфильтровано с помощью интеллектуального фильтра, который добавляет к изображению оттенок, насыщенность, яркость. Поэтому мне нужно изменить все цвета на изображении на оттенок синего. Но в css функция hue-rotate() поворачивает все цвета, но мне нужно установить один цвет и изменить некоторую насыщенность и яркость. Это исходное изображение: исходное изображение Мне нужно получить это:   отфильтрованное изображение Как я могу установить один цвет оттенка на изображении с фильтром CSS?


person Vsevolod Fedorov    schedule 04.08.2019    source источник


Ответы (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
comment
о, у меня есть еще один вопрос. Как я могу сделать это с прозрачным изображением? Я не хочу видеть синий фон на прозрачной области - person Vsevolod Fedorov; 04.08.2019
comment
@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
comment
о, это хорошая идея, но как я могу вычислить свойства, чтобы получить тот же результат, что и в фотошопе? - person Vsevolod Fedorov; 04.08.2019
comment
@VsevolodFedorov тут становится сложно :) нужно копаться в сложном расчете, чтобы найти формулу, или делаешь это банально и с ошибками, пока не получишь нужный результат - person Temani Afif; 04.08.2019