Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP] osadzanie i generowanie obrazka w jednym skrypcie
kerum
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


Dzien dobry,

mam pytanie odnosnie generowania obrazkow z PHP i wstawiania ich w HTML,
a konkretnie jak polaczyc obie czynnosci w jednym skrypcie PHP.

Typowe wstawianie obrazka jest rozbite na dwa pliki,
ponizszy przyklad dziala bez problemu:

plik test.php:

  1. <?php
  2. header( 'Content-type: image/png' );
  3. $img = imagecreatetruecolor( 150, 30 );
  4. imagepng( $img );
  5. imagedestroy( $img );
  6. ?>

plik test.html:

  1. <img src='test.php'>
  2. </html>

Zalezy mi na tym, aby obie czynnosci (generowanie obrazka i wstawianie go w HTML)
byly wykonane jednym skryptem PHP, cos w stylu:

plik test2.php:

  1. <?php
  2. function generate_php()
  3. {
  4. header( 'Content-type: image/png' );
  5. $img = imagecreatetruecolor( 150, 30 );
  6. imagepng( $img );
  7. imagedestroy( $img );
  8. }
  9.  
  10. echo '<html>';
  11. echo '<img src=', generate_php() , '>';
  12. echo '</html>';
  13. ?>

Niestety w tym przypadku otrzymuje slawny komunikat od funkcji header():
Warning: Cannot modify header information - headers already sent by
(czytalem odpowiedni rozdzial w FAQ: http://forum.php.pl/index.php?showtopic=44...=0&start=0)

Probowalem kombinowac z buforowaniem poprzez ob_start() i ob_flush() ale nie wiem,
czy to jest wlasciwe rozwiazanie.

Uwaga: nie chodzi mi o osadzenie rysunku jako URI data jak opisane np. tutaj:
http://www.sencer.de/article/1135/how-to-i...-with-data-uris

Chodzi mi o zasymulowanie w jedym skrypcie tego, co w pierwszym przykladzie
bylo zrealizowane w dwoch plikach.

Czy ktos ma jakis pomysl?

Pozdrawiam,
K.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




imagepng i drugi parametr
Go to the top of the page
+Quote Post
kerum
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


Dzieki za szybka odpowiedz.

Zapomnialem dodac, ze chodzilo mi o to, aby nie trzeba tworzyc pliku z obrazkiem na serwerze
(podobnie jak nie jest tworzony w pierwszym przykladzie).

Tak wiec pytanie jest aktualne.

Pozdrawiam,
K.
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://www.sweeting.org/mark/blog/2005/07/...mbedded-in-html
Go to the top of the page
+Quote Post
kerum
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


Hej,

jak pisalem w pierwszym post'cie nie chodzi o osadzanie rysunku poprzez URI czyli 'data:'.
Link, ktory przytoczylem, opisuje to samo.
Czy ktos moglby zaproponowac jakis kod? A moze sie nie da?
Pytanie nadal aktualne.

Pozdro,
K.
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ok spoko ale nie doczytałem
Nie da się wygenerować obrazka nie zapisując go do pliku i przekazując go tagu img w formie ciągu bez użycia "data:"
Także skoro nie chodzi ci o użycie powyższe rozwiązania więc nie wiem co teraz chcesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kerum
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


sprobuje jeszcze raz opisac slowami o co chodzi.

W pierwszym poscie pokazalem dwa przyklady:
-> pierwszy z dwoma plikami (dzialajacy)
-> drugi z jednym skryptem (niedzialajacy)

W pierwszym przykladzie przegladarka dostaje strone, czyta ja, dochodzi do <IMG SRC=test.php>,
robi kolejnego request'a, wywolany skrypt test.php przygotowuje rysunek i podsyla go i ostatecznie strona wyswietla sie kompletnie z rysunkiem.

Chodzi mi o skonstruowanie analogicznego mechanizmu w jednym skrypcie. Probowalem naszkicowac go jako przyklad dwa.
Chcialbym zamienic wywolanie zewnetrznego skryptu php poprzez wywolanie funkcji w obrebie tego samego skryptu,
ktory wygenerowal html'a.
Ten przyklad nie dziala i zastanawiam sie, czy mozliwe jest jego poprawienie, np. poprzez buforowanie opozniajace dosylanie rysunku przez funkcje.

Innymi slowy czy da sie stworzyc rozwiazanie w jednym skrypcie, ktore wysyla w html strone zawierajaca <IMG SRC...>
a jednoczesnie dosyla zrodlo tego rysunku, w odpowiedzi na kolejny request przegladarki.

Pozdrawiam,
K.
Go to the top of the page
+Quote Post
hind
post
Post #8





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

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


chyba że chodzi o prostego if
  1. if($_GET['generuj']) {
  2. header( 'Content-type: image/png' );
  3. $img = imagecreatetruecolor( 150, 30 );
  4. imagepng( $img );
  5. imagedestroy( $img );
  6. }else{
  7. echo '<html>';
  8. echo '<img src="?generuj=1">';
  9. echo '</html>';
  10. }


Ten post edytował hind 18.10.2010, 13:04:10
Go to the top of the page
+Quote Post
kerum
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


Heja,

nie o to tez mi nie chodzilo. W podanym przez Ciebie przykladzie i tak jest wolany od nowa skyrpt php,
fakt ze ten sam, ale jednak caly skrypt od nowa.
Chodzilo mi o to, aby to wywolanie bylo zrealizowane przez wolanie funkcji php, zdefiniowanej w tym samym skrypcie.

Chcialem dzieki temu uproscic sobie przekazywania dziesiatkow parametrow do generowania wykresu.
Prosciej byloby przekazac je jako parametry funkcji, niz poprzez sesje, POST, GET, itp.

Zaintrygowalo mnie, ze taki z pozoru prosty mechanizm jest dosc trudny do zaimplementowania.

Pozdr.,
K.
Go to the top of the page
+Quote Post
hind
post
Post #10





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

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


niedasie... możesz tylko zrobić funkcję która ma wstępnie zdefiniowane jakieś parametry
  1. function maleobrazki($plik) { return '/thumb.php?file='.$plik.'&rozmiar=maly&jakies_inne_argumenty=dupa' ;}
  2. function duzeobrazki($plik) { return '/thumb.php?file='.$plik.'&rozmiar=duzy&jakies_inne_argumenty=dupa' ;}


i potem tylko w viewie "<img src=".maleobrazki('laska.jpg').">";
Go to the top of the page
+Quote Post
kerum
post
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.04.2009

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


ok, rozumiem, ze nie da sie zrobic jednego skryptu, ktory obsluzy dwa requesty i musza byc dwa.
Wielkie dzieki za wszystkie odpowiedzi.

Jaka metode polecacie do przekazania parametrow zwizanych z generowaniem wykresu miedzy tymi skryptami
(przede wszystkim tablice)?
Session, POST czy moze cos innego?

Pozdrawiam,
K.
Go to the top of the page
+Quote Post

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: 26.09.2025 - 23:43