Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP][GD] Problem z jakością
red9skull
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Witam. Zacznę od początku. Serwis http://gametracker.com/ oferuje możliwość sprawdzania statystyk serwerów gier: lista graczy online, aktualna mapa itp. Mają też grafiki w postaci wykresów:

(IMG:http://i29.tinypic.com/2nrq1oy.png)

Zakładam własną sieć serwerów i chciałbym stworzyć stronkę, na której mógłbym na bieżąco monitorować serwery (bo na gametracker'ze grafiki są rzadko aktualizowane), więc postanowiłem zrobić podobne grafiki. Efekt:

(IMG:http://imgur.com/XTx66.png)

Jak widać moje cyferki i pomarańczowa linia są poszarpane, stąd moje pytanie: czy da się (i jeśli tak, to jak) uzyskać "plynne" linie? Grafiki są generowane w PHP.

Ten post edytował red9skull 18.07.2010, 18:08:17
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Próbowałeś antyaliasingu?

Ten post edytował darko 18.07.2010, 18:11:52
Go to the top of the page
+Quote Post
red9skull
post
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(darko @ 18.07.2010, 19:11:17 ) *
Próbowałeś antyaliasingu?

Heh, nie mam tej funkcji:
Kod
Fatal error: Call to undefined function imageantialias()


Mam zainstalowaną bibliotekę GD.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zrób większy obrazek, włącz antyaliasng i zmniejsz go do wymaganej wielkości (IMG:style_emoticons/default/winksmiley.jpg) Schodkowanie powinno się optycznie zmniejszyć.
Go to the top of the page
+Quote Post
red9skull
post
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


@thek:
Nie wiem jakim cudem, ale nie mam funkcji do antyaliasingu. Choć posiadam GD.
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To praktycznie niemożliwe. Czemu -> (PHP 4 >= 4.3.2, PHP 5) Musiałbyś mieć bardzo starą wersję PHP, choć to
Cytat
Note: This function is only available if PHP is compiled with the bundled version of the GD library.
może być przyczyna. W każdym razie możesz zrobić coś "dookoła". Zrób to co wspomniałem, ale bez antyaliasingu. Jeśli przeskalujesz duży obrazek do małego... uzyskasz efekt antyaliasingu poprzez kompresję jpg (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
red9skull
post
Post #7





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(thek @ 18.07.2010, 21:15:54 ) *
To praktycznie niemożliwe. Czemu -> (PHP 4 >= 4.3.2, PHP 5) Musiałbyś mieć bardzo starą wersję PHP, choć to
może być przyczyna. W każdym razie możesz zrobić coś "dookoła". Zrób to co wspomniałem, ale bez antyaliasingu. Jeśli przeskalujesz duży obrazek do małego... uzyskasz efekt antyaliasingu poprzez kompresję jpg (IMG:style_emoticons/default/winksmiley.jpg)

A co jeśli obrazek jest PNG?
Go to the top of the page
+Quote Post
mayu11
post
Post #8





Grupa: Zarejestrowani
Postów: 99
Pomógł: 9
Dołączył: 9.09.2008

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


  1. imagefilter($img, IMG_FILTER_SELECTIVE_BLUR);


Może tak?

@EDIT
Można spróbować jeszcze tak:

  1. imagefilter($im, IMG_FILTER_PIXELATE, 2);



Ten post edytował mayu11 18.07.2010, 20:45:16
Go to the top of the page
+Quote Post
red9skull
post
Post #9





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


  1. imagefilter($img, IMG_FILTER_SELECTIVE_BLUR);

Po dodaniu tej funkcji dostaję cały czarny obraz.
  1. imagefilter($im, IMG_FILTER_PIXELATE, 2);

Nic nie zmienia. Nawet po zamianie 2 na 10, 54, 999999 itd.
Go to the top of the page
+Quote Post
mayu11
post
Post #10





Grupa: Zarejestrowani
Postów: 99
Pomógł: 9
Dołączył: 9.09.2008

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


A czy imagefilter($im, IMG_FILTER_PIXELATE, 2); dałeś tuż przed imagexxx($img); (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
red9skull
post
Post #11





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(mayu11 @ 18.07.2010, 22:01:53 ) *
A czy imagefilter($im, IMG_FILTER_PIXELATE, 2); dałeś tuż przed imagexxx($img); (IMG:style_emoticons/default/questionmark.gif)

Możesz jaśniej? Raz piszesz $im drugi raz $img...
Go to the top of the page
+Quote Post
mayu11
post
Post #12





Grupa: Zarejestrowani
Postów: 99
Pomógł: 9
Dołączył: 9.09.2008

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


  1. $zmienna = imagecreate(SZEROKOŚĆ,WYSOKOŚĆ);

To zmienna określana przy tworzeniu obrazka.

  1. imagefilter($zmienna, IMG_FILTER_PIXELATE, 2);


Łapiesz o co chodzi?...
Go to the top of the page
+Quote Post
thek
post
Post #13





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To czy obrazek jest png, jpg czy gwc (gówno wie co (IMG:style_emoticons/default/winksmiley.jpg) ) jest nieistotne. Operacje rysowania i innych wykonujesz nie na pliku bezpośrednio tylko na formacie własnym biblioteki gd. To do niego jpg konwertujesz funkcją createimagefromjpg. Używając imagecreatetruecolor też taki tworzysz jako pusty.
Jeśli obrazek jest png, to jedynie musisz zadbać by nie stracił przezroczystości. O tym też na necie poczytać możesz.
Go to the top of the page
+Quote Post
Crozin
post
Post #14





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Tak trochę z innej beczki: może masz za to dostęp do ImageMagicka na serwerze?
Go to the top of the page
+Quote Post
red9skull
post
Post #15





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Po przeskalowaniu jest jeszcze gorzej:

(IMG:http://imgur.com/cI4dv.png)

@Crozin:
Na razie pracuję na locahoście, więc mam możliwość wgrania tej biblioteki. Tylko mogą być potem jaja jakbym chciał wrzucić na zewnętrzny serwer (IMG:style_emoticons/default/biggrin.gif) Ale dobra, przyjmijmy, że mam - co teraz?

Ten post edytował red9skull 19.07.2010, 08:03:57
Go to the top of the page
+Quote Post
darko
post
Post #16





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Dokumentacja ImageMagik jest generalnie słaba, strzęp informacji jest tutaj ale niewiele wnosi, poza tym, że antyaliasing jest domyślnie włączony:

Cytat
Controls whether stroked outlines are antialiased. Stroked outlines are antialiased by default. When antialiasing is disabled stroked pixels are thresholded to determine if the stroke color or underlying canvas color should be used.
Go to the top of the page
+Quote Post
red9skull
post
Post #17





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Jak to się instaluje na linuxie?
Go to the top of the page
+Quote Post
darko
post
Post #18





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Na Debianie i debianopodobnych:
  1. apt-get install imagemagick


Generalnie czekerałt: http://www.ducea.com/2006/12/21/install-im...-557-on-debian/
Go to the top of the page
+Quote Post
red9skull
post
Post #19





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(darko @ 19.07.2010, 11:24:05 ) *
Na Debianie i debianopodobnych:
  1. apt-get install imagemagick


Generalnie czekerałt: http://www.ducea.com/2006/12/21/install-im...-557-on-debian/

Dzięki, dziwnym trafem mam to zainstalowane (IMG:style_emoticons/default/snitch.gif)


=======================================

@EDIT:

  1. sudo apt-get install imagemagick
  2. Czytanie list pakietów... Gotowe
  3. Budowanie drzewa zależności
  4. Odczyt informacji o stanie... Gotowe
  5. imagemagick jest już w najnowszej wersji.

Gdy odpalam taki skrypt:
  1. <?php
  2.  
  3. $im = new Imagick();
  4. $im->newPseudoImage(50, 50, "gradient:red-black");
  5. $draw = new ImagickDraw();
  6.  
  7. /* Start a new pattern called "gradient" */
  8. $draw->pushPattern('gradient', 0, 0, 50, 50);
  9.  
  10. /* Composite the gradient on the pattern */
  11. $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);
  12.  
  13. /* Close the pattern */
  14. $draw->popPattern();
  15.  
  16. /* Use the pattern called "gradient" as the fill */
  17. $draw->setFillPatternURL('#gradient');
  18.  
  19. /* Set font size to 52 */
  20. $draw->setFontSize(52);
  21.  
  22. /* Annotate some text */
  23. $draw->annotation(20, 50, "Hello World!");
  24.  
  25. /* Create a new canvas object and a white image */
  26. $canvas = new Imagick();
  27. $canvas->newImage(350, 70, "white");
  28.  
  29. /* Draw the ImagickDraw on to the canvas */
  30. $canvas->drawImage($draw);
  31.  
  32. /* 1px black border around the image */
  33. $canvas->borderImage('black', 1, 1);
  34.  
  35. /* Set the format to PNG */
  36. $canvas->setImageFormat('png');
  37.  
  38. /* Output the image */
  39. header("Content-Type: image/png");
  40. echo $canvas;
  41.  
  42. ?>

To zwraca mi:
Kod
Fatal error: Class 'Imagick' not found in /home/r9s/public_html/php/gd/test.php on line 3

Dlaczego?

Ten post edytował red9skull 19.07.2010, 10:32:32
Go to the top of the page
+Quote Post
Crozin
post
Post #20





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


ImageMagick to nie jest coś stricte dla PHP - to po prostu program, który siedzi sobie na dysku. Potrzebujesz jeszcze pobrać coś w stylu php-imagick czy coś w ten deseń, upewnić się że w php.ini jest włączone i zrestartować serwer.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 7.10.2025 - 22:51