Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GD, słaba jakość i za duży napis
Forum PHP.pl > Forum > PHP
n33thl
Witam. Mam skrypt, który generuje dynamiczny napis na obrazku (napis wyciągany z bazy danych). Problem jest w tym, że generowany obraz jest w tragicznej jakości i ma za duże te napisy.
http://r4ffi.info/statusek/cs-bytow_ffa_bf2_userbar.php
  1. <?php
  2. $db_host = "xxx";
  3. $db_user = "xxx";
  4. $db_pass = "xxx";
  5. $db_base = "xxx";
  6. $db = mysql_connect($db_host, $db_user, $db_pass);
  7. mysql_select_db($db_base, $db);
  8. $bf2_1 = mysql_query('SELECT * FROM statusy WHERE id="1"');
  9. $bf2 = mysql_fetch_array($bf2_1);
  10. $rysunek = imagecreatefromjpeg("userbar.jpg");
  11. $bialy = ImageColorAllocate($rysunek, 255, 255, 255);
  12. $nieb = ImageColorAllocate($rysunek, 0, 255, 255);
  13. $czar = ImageColorAllocate($rysunek, 0, 0, 0);
  14. $zielony = ImageColorAllocate($rysunek, 16, 160, 34);
  15. ImageString($rysunek, 70, 230, 1, '' .$bf2['map']. '', $bialy);
  16. ImageString($rysunek, 70, 180, 1, '' .$bf2['active']. '/' .$bf2['max'] . '', $bialy);
  17. header("Content-type: image/jpeg");
  18. ImageJpeg($rysunek);
  19. ?>

Normalnie obraz w JPG jest bardzo dobrej jakości

Próbowałem to robić w formatach PNG, GIF ale ciągle jakość jest ta sama. Może na tym obrazku to lepiej widać:
http://cs-bytow.pl/statusy/cs-bytow_ffa_bf2.php
A normalnie:

Z góry dziękuję za jakieś rady.
nmts
Spróbuj użyć lepszą imagettftext, może zmieniać czcionkę, wielkość, kąt i wygładza napisy. Używam jej wraz z plikami png i jakość jest najlepsza. Jeśli dodawanie napisów nie jest powiązane z pogorszeniem jakości to może masz jakąś starą bibliotekę GD.
n33thl
Hmm zmieniłem wszystko na te imagettftext, wygląda ładnie, tylko jest jeden szczegół. Nie wyświetla tła...
  1. <?php
  2. $db_host = "x";
  3. $db_user = "x";
  4. $db_pass = "x";
  5. $db_base = "x";
  6. $db = mysql_connect($db_host, $db_user, $db_pass);
  7. mysql_select_db($db_base, $db);
  8. $bf2_1 = mysql_query('SELECT * FROM statusy WHERE id="1"');
  9. $bf2 = mysql_fetch_array($bf2_1);
  10. $bgpic = 'userbar.png';
  11. header('Content-type: image/png');
  12. $im = imagecreatefrompng($bgpic);
  13. $white = imagecolorallocate($im, 255, 255, 255);
  14. $grey = imagecolorallocate($im, 128, 128, 128);
  15. $black = imagecolorallocate($im, 0, 0, 0);
  16. imagefilledrectangle($im, 0, 0, 399, 29, $white);
  17. $text = '' .$bf2['active']. '/' .$bf2['max']. ', ' .$bf2['map']. '';
  18. $font = 'arial.ttf';
  19. imagettftext($im, 10, 0, 11, 11, $grey, $font, $text);
  20. imagettftext($im, 10, 0, 10, 10, $black, $font, $text);
  21. imagepng($im);
  22. imagedestroy($im);
  23. ?>

http://r4ffi.info/statusek/lepsze.php
Wielkość tego obrazka jest równa temu "userbarowi", tylko coś tego userbara nie widać.
darko
Dla określenia barwy tła użyj funkcji
imagefilledrectangle

Dla koloru przeźroczystości
imagecolortransparent
n33thl
Dzięki, wszystko działa, znowu mi pomogłeś smile.gif
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.