Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tworzenie i kodowanie obrazu w jednym skrypcie
Forum PHP.pl > Forum > PHP
Azek
Mam następujący kod:
  1. <?php
  2. function make_image($tekst);{
  3. $im = imagecreate(110, 20)
  4. or die("Cannot Initialize new GD image stream");
  5. $background_color = imagecolorallocate($im, 0, 0, 0);
  6. $text_color = imagecolorallocate($im, 233, 14, 91);
  7. imagestring($im, 1, 5, 5, $tekst, $text_color);
  8.  
  9. imagepng($im,"obrazek.png"); // <-zapisuje obraz na serwerze
  10.  
  11. $img_src = "obrazek.png";
  12. $imgbinary = fread(fopen($img_src, "r"), filesize($img_src)); //<-pobiera ten sam obraz z serwera
  13.  
  14. $img_str = base64_encode($imgbinary);
  15. return ($img_str);
  16. }
  17. ?>


Czy da się w bezpośredni sposób przekazać wygenerowany obrazek do zakodowania, tak aby nie było potrzeby pobierania go przez fread?
Fifi209
Jak nie podasz nazwy przy imagepng to już z manuala wiesz, że nie zapisze go do pliku:
Cytat
The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.


Więc:
  1. $img_str = base64_encode(imagepng($im));


Swoją drogą, po co takie coś robić?
Azek
Spróbowałem tak, ale niestety zamiast obrazka wychodzi mi to:
‰PNG  IHDRnV,šPLTEé[an÷fIDAT•c` `fxÄŔĂ`Ç ŔçŔä˛41ƒ‚€˜Ë–Ý’Ŕq˛@੤;{ĂĄ0— œi
Sephirus
Dodaj nagłówek:

  1. header('Content-Type:image/png');
  2.  
  3. // dalszy kod


EDIT: mój błąd - źle zrozumiałem, nie patrz wyżej - posłuchaj Nospora i użyj ob_start bo ta funkcja nie zwraca treści obrazka a wypluwa ją na wyjście.

  1. // ...
  2. imagepng(...);
  3. // ...
nospor
Hehe, fifi, każesz zaglądać do manuala a sam nie zaglądasz.... Jak nie podasz nazwy pliku to obraz leci na output a nie do zmiennej smile.gif
Trzeba użyć ob_start itp. by przechwycic obraz z output i zapisać do zmiennej
Azek
DZIĘKI! Działa jak ta lala... I o to chodziło!
Fifi209
nospor - po prostu zrozumiałem fragment:
image stream will be outputted directly.

że funkcja zrobi po prostu return zamiast zwracać przez referencję

Niemniej jednak faktycznie, moje niedoczytanie a raczej zmęczenie (patrz godzinę o której pisałem)
nospor
W manualu zawsze jest taki bloczek:
Cytat
Return Values

Returns TRUE on success or FALSE on failure.
który informuje co dokładnie funkcja może zwracać wink.gif

No ale ok, godzina wyjaśnia wszystko 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.