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

Самый легкий способ для изменения цвета PNG изображения - это использование свойства filter.

Свойство filter применяет визуальные эффекты к элементу (изображению).

Оно имеет следующие значения:

filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url() | initial | inherit;

С помощью этих значений мы можем изменить цвет изображения.

Фильтры являются новыми для браузеров и поддерживаются только очень современными браузерами. Можно использовать фильтры вместе с -Webkit-filter для Safari, Google Chrome и Opera.

Давайте попробуем пошагово изменить цвет изображения:

1. Создайте HTML.

  • Скопируйте и вставьте ссылку изображения в основную часть (body section). Здесь мы создаем две изображения с классами "image1" и "image2".
<body>  
  <img class = "image1" src="https://www.sccpre.cat/mypng/detail/122-1229311_bird-feathers-flying-macaw-wings-birds-with-white.png"
    width="500px" height="250px" alt="filter applied" />  
  <img class = "image2" src="https://www.sccpre.cat/mypng/detail/122-1229311_bird-feathers-flying-macaw-wings-birds-with-white.png"
    width="500px" height="250px" alt="filter applied" />  
</body>

2. Добавьте CSS.

Теперь добавляем стили к классам "Image1" и "Image2".

  • Задайте ширину этих изображений с помощью свойства width.
  • Добавьте свойство filter, чтобы изменить цвет изображения.
  • Используйте значение "invert", которое инвертирует первое изображение. Здесь устанавливаем 100% для полного инвертирования изображения.
  • Используйте значение "sepia" (100%), которое превращает второе изображение полностью в сепию.
<style>  
  img {  
  width:40%; 
  float:left; 
  } 
  .image1 { 
  filter: invert(100%); 
  -webkit-filter:invert(100%); 
  } 
  .image2 { 
  filter: sepia(100%);   
  -webkit-filter: sepia(100%);  
  } 
</style>

Посмотрим, каким получился результат:

Пример

<!DOCTYPE html>  
<html>
  <head>
    <title>Измените цвет изображения</title>
    <style>  
      img {  
      width:40%; 
      float:left; 
      } 
      .image1 { 
      filter: invert(100%); 
      -webkit-filter: invert(100%);
      } 
      .image2 { 
      filter: sepia(100%);    
      -webkit-filter: sepia(100%);
      } 
    </style>
  </head>
  <body>
    <h2>Измените цвет PNG изображения</h2>
    <img class="image1" src="https://www.sccpre.cat/mypng/detail/122-1229311_bird-feathers-flying-macaw-wings-birds-with-white.png" width="500px" height="250px" alt="filter applied" />  
    <img class="image2" src="https://www.sccpre.cat/mypng/detail/122-1229311_bird-feathers-flying-macaw-wings-birds-with-white.png"
      width="500px" height="250px" alt="filter applied" />  
  </body>
</html>

Рассмотрим другой пример, где использованы восемь значений свойства filter:

Пример

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      body {
      background-color:#03030a;
      min-width: 800px;
      min-height: 400px
      }
      img {
      width:20%;
      float:left; 
      margin:0;
      }
      /*Filter styles*/
      .saturate { 
      filter: saturate(3); 
      -webkit-filter: saturate(3);
      }
      .grayscale {
      filter: grayscale(100%);
      -webkit-filter: grayscale(100%); 
      }
      .contrast { 
      filter: contrast(160%); 
      -webkit-filter: contrast(160%); 
      }
      .brightness {
      filter: brightness(0.25); 
      -webkit-filter:brightness(0.25);
      }
      .blur { 
      filter: blur(3px);
      -webkit-filter: blur(3px); 
      }
      .invert { 
      filter: invert(100%); 
      -webkit-filter: invert(100%); 
      }
      .sepia { 
      filter: sepia(100%); 
      -webkit-filter: sepia(100%);
      }
      .huerotate { 
      filter: hue-rotate(180deg); 
      -webkit-filter: hue-rotate(180deg); 
      }
      .opacity { 
      filter: opacity(50%);
      -webkit-filter: opacity(50%);
      }
    </style>
  </head>
  <body>
    <h2>Измените цвет PNG изображения</h2>
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="original">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="saturate" class="saturate">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="grayscale" class="grayscale">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="contrast" class="contrast">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="brightness" class="brightness">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="blur" class="blur">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="invert" class="invert">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="sepia" class="sepia">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="huerotate" class="huerotate">
    <img alt="Mona Lisa" src="http://i.stack.imgur.com/OyP0g.jpg" title="opacity" class="opacity">
  </body>
</html>

Можете также применить следующую технику:

  • Укажите <div> элементы в основной части. Установите IDs для вашего div элемента. Здесь имеем ID "original" и "changed".
<body>
  <div id="original"></div>
  <div id="changed"></div>
</body>

Начните применить стили для IDs. Установите filter: hue-rotate; к ID "changed
  • Начните применить стили для IDs. Установите filter: hue-rotate; к ID "changed".
#changed {
-webkit-filter : hue-rotate(180deg);
filter : hue-rotate(180deg);
}

Результат будет выглядеть следующим образом:

Пример

<!DOCTYPE html>  
<html>
  <head>
    <title>Измените цвет изображения</title>
    <style>  
      #original, #changed {
      background: url('https://image.freepik.com/free-photo/orange-red-siamese-fighting-fish-betta-splendens-isolated-white-background_51519-539.jpg');
      background-size: cover;
      width: 30%;
      margin: 0 10% 0 10%;
      padding-bottom: 28%;
      float: left;
      }
      #changed {
      -webkit-filter : hue-rotate(180deg);
      filter : hue-rotate(180deg);
      }
    </style>
  </head>
  <body>
    <h2>Измените цвет PNG изображения</h2>
    <div id="original"></div>
    <div id="changed"></div>
  </body>
</html>