Advertisement
  1. Web Design
  2. HTML/CSS
  3. CSS

Edycja zdjęć w CSS: Łączenie technik

Scroll to top
Read Time: 5 min
This post is part of a series called Editing Images in CSS.
Editing Images in CSS: Blend Modes

() translation by (you can also view the original English article)

W ostatnich dwóch tutorialach tej serii dowiedzieliśmy się, jak za pomocą filtrów i trybu wtapiania kompletnie zmienić wygląd zdjęcia. W tym tutorialu opowiem o podstawach obróbki zdjęć z wykorzystaniem obu właściwości naraz.

Podstawy

Każda obróbka zdjęć, która wykracza poza najprostsze podstawy, wymaga na ogół użycia więcej niż jednego elementu. Możemy używać do tego pseudoelementów. Pojawia się tu tylko jeden problem: element img mieści się w obrębie elementów podmienianych, dlatego :before i :after nie będą działały dla tagów obrazka. Aby się z tym uporać, musimy stworzyć dla obrazka wrapper (opakowanie). Najlepiej nadaje się do tego tag figure. Kod powinien więc wyglądać mniej więcej tak:

1
<figure>
2
  <img src="image-url">
3
</figure>

Wszystkie efekty edycji, nad którymi będziemy pracować, będą korzystać ze wspólnego wyjściowego CSS.

1
figure {
2
  position: relative;
3
}
4
5
figure:before,
6
figure:after {
7
  content: '';
8
  height: 100%;
9
  width: 100%;
10
  top: 0;
11
  left: 0;
12
  position: absolute;
13
}
14
15
img {
16
  width: 100%;
17
  height: 100%;
18
  margin: 0;
19
  padding: 0;
20
}

Dzięki użyciu pseudoelementów :before:after mogę teraz skorzystać z kilku różnych trybów wtapiania (blend modes). Zauważ, że ustawiłem width i height na 100%, aby w całości objąć figure, i użyłem pozycjonowania absolutnego, które pozwoli na dokładne dopasowanie.

Na ogół do nakładania filtrów na zdjęcia czy też do wtapiania lub innych efektów będziemy wykorzystywać właśnie pseudo elementy. Zdjęcie poniżej posłuży nam jako punkt wyjścia do obróbki.

image of motorcycle as example for editingimage of motorcycle as example for editingimage of motorcycle as example for editing

Zdjęcie czarno-białe o dużym kontraście

By utworzyć zdjęcie o dużym kontraście, możesz po prostu podnieść wartość kontrastu, jeśli jednak zwiększysz dodatkowo jasność, uzyskasz bardziej dramatyczny efekt. Gdybyśmy korzystali wyłącznie z filtrów, na tym mniej więcej kończyłyby się możliwości. Korzystając z trybu wtapiania możesz jednak dorzucić jeszcze cień do wewnątrz (inset box-shadow) z wtapianiem nakładkowym (overlay), co da jeszcze ciekawszy wynik.

1
img {
2
  filter: contrast(1.8) brightness(1.5) grayscale(1);
3
}
4
5
figure:before {
6
  z-index: 3;
7
  mix-blend-mode: overlay;
8
  box-shadow: 0 0 200px black inset;
9
}

Właściwość z-index sprawi, że nasze pseudo elementy znajdą się powyżej zdjęcia. Ja wykorzystałem wtapianie nakładkowe, by zdjęcie po nałożeniu cienia box-shadow było nieco ciemniejsze.

Przesuwając myszką ponad zdjęciem, możesz sprawdzić, czym różnią się poszczególne filtry, zestawy filtrów oraz tryby wtapiania.

Aby poćwiczyć, poeksperymentuj z różnymi wartościami dla box-shadow na CodePen demo.

Postarzanie zdjęć

Kolory na starych fotografiach na ogół są wyblakłe, a na brzegach pojawia się czerwonawo-brązowa smuga. Aby odtworzyć ten efekt, musimy skorzystać z kolejnych elementów i filtrów. Nasz CSS będzie wyglądał tak:

1
img {
2
  filter: saturate(0.6);
3
}
4
5
figure {
6
  filter: contrast(1.1) saturate(1.9) sepia(0.7) grayscale(0.3);
7
}
8
9
figure:before {
10
  z-index: 2;
11
  mix-blend-mode: multiply;
12
  box-shadow: 0 0 250px brown inset;
13
  background: rgba(125, 100, 0, 0.3);
14
}
15
16
figure:after {
17
  z-index: 3;
18
  mix-blend-mode: hard-light;
19
  box-shadow: 0 0 150px pink inset;
20
  background: rgba(198, 155, 0, 0.3);
21
}

Tym razem zastosowałem filtry zarówno do image, jak i do figure. Generalnie chodzi nam o to, by zdjęcie stało się mniej kolorowe. Osiągniemy to za pomocą filtra nasycenia (saturate) o wartości niższej niż 1. Filtry na figure nakładamy już po całym wtapianiu. Jeśli nie nałożysz tych filtrów, odcienie brązu na wynikowym zdjęciu zostaną mocno uwydatnione, a nie o to nam chodzi.

Zauważ, że użyłem również półprzezroczystego tła dla obu pseudoelementów. Nadaje to zdjęciom czerwonawo-brązowy odcień. Box-shadow wykorzystałem do tego, by nadać obrysowi odcień nieco bliższy brązowemu.

Aby uzyskać jak najlepszy rezultat, poeksperymentuj z różnymi właściwościami w demo.

Zmiana zabarwienia

Tym razem nadamy zdjęciu błękitne zabarwienie (hue). W przeciwieństwie do barw ciepłych, dołożenie chłodnych odcieni, np. niebieskiego, sprawi, że zdjęcia będą mniej męczyły wzrok.

Oto CSS, który musimy wprowadzić:

1
img {
2
  filter: brightness(1.1) contrast(1.3);
3
}
4
5
figure:before {
6
  z-index: 2;
7
  mix-blend-mode: multiply;
8
  box-shadow: 0 0 100px rgba(100, 150, 200, 1) inset, 0 0 300px rgba(100, 150, 200, 1) inset;
9
}
10
11
figure:after {
12
  z-index: 3;
13
  mix-blend-mode: difference;
14
  background: rgba(0, 0, 255, 0.3);
15
}

Na początek zwiększę jasność i kontrast zdjęcia. W ten sposób upewnimy się, że mniej wyraziste barwy nie znikną, a samo zdjęcie nie stanie się w wyniku edycji nazbyt wyblakłe.

Na ogół  musimy użyć kilku box-shadow o jasnych barwach na raz, by zmiany były zauważalne. Właśnie dlatego dodałem do zdjęcia dwa błękitnawe box-shadow. Gdy użyjemy samego box-shadow, błękitnego odcienia nabierze tylko sam brzeg obrazka. Aby rozprowadzić błękitną barwę po całym zdjęciu, użyłem jej jako tła (background) w pseudoelemencie  :after. Tak wygląda rezultat użycia wszystkich filtrów na raz:

Spróbuj nadać zdjęciu zielone lub czerwone zabarwienie w demo.

Żółtawa mgła

Czy zdarzyło Ci się kiedyś w lekko pochmurny wieczór widzieć drobiny piasku w powietrzu, niesione wiatrem? W takich warunkach pogodowych wszystko nabiera żółtawego zabarwienia, a przedmioty wydają się nieco wyblakłe. Aby odtworzyć ten efekt, skorzystamy z takiego oto kodu CSS:

1
img {
2
  filter: saturate(0.2);
3
}
4
5
figure {
6
  filter: contrast(1.8) brightness(1.1) saturate(1.5);
7
}
8
9
figure:before {
10
  z-index: 2;
11
  mix-blend-mode: multiply;
12
  box-shadow: 0 0 100px rgba(0,0,0,0.5) inset;
13
  background: rgba(125, 100, 0, 0.3);
14
}
15
16
figure:after {
17
  z-index: 3;
18
  mix-blend-mode: hard-light;
19
  box-shadow: 0 0 500px rgba(0,0,0,0.6) inset;
20
  background: rgba(198, 155, 0, 0.3);
21
}

Na początek ograniczam nasycenie (saturation) zdjęcia. Tak pseudoelement  :before, jak i :after otrzymują transparentne żółtawe tło, co nadaje odpowiednie zabarwienie. Jeśli użyjemy metody wtapiania hard-light pod :after, mgła będzie gęstsza.

Box-shadow przy pseudoelementach zogniskuje uwagę na motocykliście. I na zakończenie, gdy nadamy wysoki kontrast (contrast), jasność (brightness) i nasycenie (saturation) elementowi figure, wzmocnimy mgłę.

W naszym demo możesz wypróbować różne wartości dla poszczególnych właściwości stylu, by przekonać się, jak wpłynęłyby one na ostateczny rezultat.

Podsumowując

Edytowanie zdjęć w CSS nie jest trudne. Jeśli zapamiętasz uwagi, które dawałem w tym tutorialu, na pewno samodzielnie stworzysz wiele kapitalnych filtrów.

Dla praktyki poeksperymentuj z przykładami z tego tutorialu albo spróbuj odtworzyć niektóre z filtrów z Instagrama. Możesz też przejrzeć bogaty wybór filtrów i efektów z Envato Marketplace, jeśli szukasz akurat filtrów gotowych do wykorzystania.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.