Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> GD a anti-aliasing
croc
post 26.10.2011, 15:57:54
Post #1





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Sephirus
post 27.10.2011, 08:25:41
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
croc
post 27.10.2011, 20:08:32
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Sephirus
post 28.10.2011, 09:51:44
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Czyli miałem rację jednak wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
croc
post 28.10.2011, 10:32:41
Post #5





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Sephirus
post 28.10.2011, 11:40:14
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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).


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
croc
post 28.10.2011, 11:48:46
Post #7





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


No właśnie tak przypuszczałem. To gdzie miałeś rację? biggrin.gif
Go to the top of the page
+Quote Post
Sephirus
post 28.10.2011, 12:00:49
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W tym, "że to działa tylko na linie i kwadraty itp." guitar.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
croc
post 28.10.2011, 12:25:10
Post #9





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:59