Как изменить цвет 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>