Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tworzenie i kodowanie obrazu w jednym skrypcie
Azek
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 28.12.2011

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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ć?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Azek
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 28.12.2011

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


Spróbowałem tak, ale niestety zamiast obrazka wychodzi mi to:
‰PNG  IHDRnV,šPLTEé[an÷fIDAT•c` `fxÄŔĂ`Ç ŔçŔä˛41ƒ‚€˜Ë–Ý’Ŕq˛@੤;{ĂĄ0— œi

Ten post edytował Azek 12.03.2013, 08:24:45
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





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

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


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


Ten post edytował Sephirus 12.03.2013, 08:36:22


--------------------
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
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Azek
post
Post #6





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 28.12.2011

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


DZIĘKI! Działa jak ta lala... I o to chodziło!
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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)


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 06:15