Do napisania poniższej notki skłoniło mnie poprawianie miniatur przygotowanych przez pewną firmę.

1. Przezroczystość
Można uzyskać ją na kilka sposobów. Na początek dodajemy przezroczystość do warstwy (warstwa – przezroczystość – dodaj kanał alpha),

a następnie:
a) wybieramy obszar przy pomocy różdżki i kasujemy jego zawartość (klawisz del)
b) wskazujemy kolor, który ma być przezroczysty

Pierwsze rozwiązanie jest szybkie, ale przy wygładzonych krawędziach otrzymamy „halo” (można zaznaczyć więcej, ale wtedy krawędzie będą poszarpane).

Drugie rozwiązanie wymaga większego nakładu pracy, ale daje lepsze efekty.
Przed wskazaniem koloru należy „pozbyć się” z obrazka obszaru, który ma pozostać bez zmian (nie chcemy przecież otrzymać np. przezroczystych oczu).

Wybieramy mniejszy z obszarów i jeśli jest to obszar chroniony, to odwracamy zaznaczenie. Teraz możemy wybrać zamianę koloru i wskazać kolor, który ma otrzymać przezroczystość. Gimp zmieni wszystkie piksle zawierające wskazany kolor, a także piksle pośrednie (dzięki czemu punkty tworzące rozmycie wokół krawędzi także staną się częściowo przezroczyste).
Tak otrzymany obrazek będzie wtapiać się w każde tło.

2. Miniatury
Tworzenie miniatur wymaga większej uwagi, niż się wydaje. Przy tworzeniu zmniejszonego obrazka edytor graficzny określa kolory pośrednie, których należy użyć podczas redukowania liczby pikseli. Jednolite obszary pozostaną bez zmian, natomiast ostre krawędzie (np. biel-czerń) ulegną „uśrednieniu”. Kolor wyjściowy może być inny w zależności od wybranej metody. Problem pojawia się w momencie wybierania tych uśrednionych kolorów. Jeżeli program ma do dyspozycji miliony kolorów, to bez problemu wybierze sobie najlepiej pasującą barwę. W przypadku ograniczonej liczby kolorów i podstawowej palety (obraz – tryb – indeksowany) uzyskany rezultat będzie daleki od ideału.

Przykładowe obrazki (80×23 powiększone do 160×46):


miniatura 8bit

miniatura rgb

miniatura rgb->8bit


Z drugiej strony liczba kolorów ma znaczenie. Obrazek zapisany w trybie 256 kolorów ma znacznie mniejszy rozmiar. Dlatego też najlepiej jest zmienić liczbę kolorów (obraz – tryb – RGB), przeskalować obrazek (obraz – skaluj obraz), a na koniec powrócić do mniejszej liczby kolorów (obraz – tryb – indeksowany). W momencie zmiany kolorów z RGB na indeksowe program określi najczęściej występujące barwy i na ich podstawie utworzy nową paletę.

PHP
Przy tworzeniu miniatur przy pomocy gd można posłużyć się podobną techniką. Jeżeli wiemy, że obrazki po zmianie wielkości i liczby kolorów zachowają czytelność, to przed zapisem (lub wysłaniem do przeglądarki) odpalamy:

imagetruecolorpalette( $obrazek, $rozrzuc_piksle, $liczba_kolorow )

$obrazek to obiekt utworzony np. przy pomocy imagecreatetruecolor. $rozrzuc_piksle określa czy należy zastosować dithering. $liczba_kolorow pozwala określić docelową liczbę kolorów, które mają się znaleźć na obrazku. Im mniej kolorów, tym mniejszy obrazek, ale także gorsza jakość.