Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GD a anti-aliasing
Forum PHP.pl > Forum > PHP
croc
Witam,

jak otrzymujecie anti-aliasing w obrazkach uzyskanych dzięki GD? Biblioteka ta posiada funkcję imageantialias, jednak nie zdarzyło mi się jeszcze, by ta funkcja działała. Ja czasem robię obrazek kilkukrotnie większy niż pożądany i potem skaluję go z imagecopyresampled. Znacie jakieś inne sposoby, a może udało się komuś z powodzeniem użyć imageantialias?
Sephirus
Ok mogę napisać bzdurę ale...

Z tego co mi wiadomo to ta opcja działa jedynie na elementach, które sam "rysujesz"... Jeżeli tworzysz obrazek truecolor, włączasz antialias i rysujesz linie, kwadraty itp. to zadziała na nich antialias - nic mi nie wiadomo o czymś takim by to działało na całych obrazkach...

Możesz spróbować to jednak obejść ale może się okazać zbyt męczące dla pamieci i serwera ;P

Jeżeli antialias działa na linie itd to może też działać na wstawianie pojedynczych pixeli. Rób obrazek tak jak robisz do tej pory, tylko na końcu zrób jeszcze jeden nowy pusty obrazek o wymiarach tego wyjściowego i dosłownie pixel po pixelu spróbuj przerzucić każdy punkcik z jednego do drugiego (drugi musi mieć antialias) - wiem że może się to wydać szalony pomysł - ale kto wie może zadziała ;P
croc
Zauważyłem coś dziwnego. Okazało się, że imageantialias działa, ale tylko na liniach i otwartych polygonach. Na otwartych elipsach ani na żadnych z "filled...()" nie działa.
Sephirus
Czyli miałem rację jednak wink.gif
croc
Nie wiem co miałeś na myśli pisząc "całych obrazkach". Dla pojedynczych pikseli nie ma prawa działać, bo piksel jako piksel nie wymaga anti-aliasingu. A jak narysujesz sobie cokolwiek piksel po pikselu, to to jest wciąż tylko zbitek pikseli.
Sephirus
Ok tu źle napisałem - z tymi pixelami mówiłem, że nie wiem czy to zadziała, ale skoro działa dla linii nic nie stoi na przeszkodzie robić linie 1x1 pikseli tongue.gif A co do obrazów to chodziło mi o obrazki ładowane z zewnątrz (nie rysowane w GD).
croc
No właśnie tak przypuszczałem. To gdzie miałeś rację? biggrin.gif
Sephirus
W tym, "że to działa tylko na linie i kwadraty itp." guitar.gif
croc
Zrobiłem małe porównanie.

  1. Z włączonym imageantialias:
  2. Z wyłączonym imageantialias, narysowane na 2 razy większym obrazku i zmniejszone o połowę z imagecopyresampled:


Jak widać imageantialias dobrze sobie radzi z liniami, a druga metoda z pełnymi obszarami. Metoda 2. wraz z większym ratio zmniejszania/zwiększania rysuje jaśniejsze linie, co jest zrozumiałe.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.