Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rysowanie za pomocą PHP
danon198901
post 26.03.2013, 22:49:51
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


Witam,

potrzebuje wykorzystać proste rysowanie w PHP. Posiadam bibliotekę GD, napisałem prosty kod, który powiniene narysować koło, jednak moim oczom ukazuje się informacja: "Obrazek nie może zostać wyświetlony ponieważ zawiera błędy".

  1. <html>
  2. <head>
  3. <title>Koło</title>
  4. <head>
  5. <body>
  6. <?php
  7. header("Content-type: image/png");
  8. $image = ImageCreateTrueColor(500, 500);
  9.  
  10. $background = ImageColorAllocate($image, 255, 255, 255);
  11. $color = ImageColorAllocate($image, 250, 20, 20);
  12.  
  13. ImageFill($image, 1, 1, $background);
  14. ImageArc($image, 100, 100, 50, 50, 0, 0, $color);
  15.  
  16. ImagePng($image);
  17. ?>
  18. </body>
  19. </html>


Ktoś mi może podpowiedzieć skąd ten błąd?
Go to the top of the page
+Quote Post
Spawnm
post 26.03.2013, 22:59:17
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Przed header nie możesz nic wyświetlać. W skrypcie który ma generować obraz nie można zupełnie nic innego wyświetlać.
Aby wyświetlić obraz generowany przez skrypt php używamy <img src="skrypt_z_obrazkiem.php">
Go to the top of the page
+Quote Post
danon198901
post 26.03.2013, 23:51:51
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


ale przecież przed header'em (co widać na skrypcie powyżej) nic kompletnie nie jest wyświetlane więc skąd ten błąd?

Co do opcji <img src="skrypt.php"> to nie rozumiem idei, bo przecież kolejny plik php się tworzy, a treść pozostaje bez zmian.
Fakt jest taki, że opcja z <img> zadziałała...ale nie działa ona w momencie kiedy odbieram sobie informacje z poprzedniej strony.
Przykładowo załóżmy sobie (bo taka idea mi przyświeca), że na poprzedniej stronie wypełniam formularz, który posłuży mi za narysowanie elementów. Np. rysuję sobie koło, mam dwa pola tekstowe "od" oraz "do". Nie wyświetlam nic tylko odbieram informacje poprzez tablicę $_POST, które później wykorzystam np.
  1. $od = $_POST['od'];
  2. $do = $_POST['do'];
  3. ImageArc($image, $od, $do, 50, 50, 0, 0, $color);


to i tak nie zadziała. Reasumując raz jeszcze mam 3 pliki:

a ) Formularz HTML ('dowolny.php') - załóżmy, że mam 2xtextbox oraz przycisk submit
  1. <input type="text" name="od" id="od" size="20" maxlength="10" />
  2. <input type="text" name="do" id="do" size="20" maxlength="10" />
  3.  
  4. <input type="submit" value="Rysuj" id="rysuj" accesskey="x" />


b ) Plik php z <img src> ('dowolny_rysunek.php')
  1. <html>
  2. <head>
  3. <title>Rysunek</title>
  4. <head>
  5.  
  6. <body>
  7. <img src="rysunek.php">
  8. </body>
  9. </html>


c )Skrypt rysujący ('rysunek.php')
  1. <?php
  2.  
  3. $od = $_POST['od'];
  4. $do = $_POST['do'];
  5. header("Content-type: image/png");
  6. $image = ImageCreateTrueColor(500, 500);
  7.  
  8. $background = ImageColorAllocate($image, 255, 255, 255);
  9. $color = ImageColorAllocate($image, 250, 20, 20);
  10.  
  11. ImageFill($image, 1, 1, $background);
  12. ImageArc($image, $od, $do, 50, 50, 0, 0, $color);
  13.  
  14. ImagePng($image);
  15. ?>


I teraz w pliku nr1 czy też zastosuję:
<form name="frm" enctype="multipart/form-data" action="rysunek.php" method="post">
czy też
<form name="frm" enctype="multipart/form-data" action="dowolny_rysunek.php" method="post">

to rysowanie i tak nie działa:( Kiedy robię samo rysowanie (bez odbierania tablicą $_POST rysowanie działa. Proszę mi wytłumaczyć jak prostakowi o co tu chodzi i jak osiągnąć zamierzony cel, bo ja już załamuję ręce.
Go to the top of the page
+Quote Post
markonix
post 27.03.2013, 00:04:23
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Nie możesz nic wyświetlić czyli przesłać do przeglądarki, a przesyłasz elementy HTML.

FORMULARZ z danymi -> dane z POST do zmiennych -> rysunek <img src="skrypt.php?tu dane ze zmiennych" />
W ten sposób wyświetlisz i obrazek i formularz, jeżeli to nie jest wymagane to po prostu przesyłasz dane z formularza do pliku z generowaniem obrazu.

Ten post edytował markonix 27.03.2013, 00:04:31


--------------------
Go to the top of the page
+Quote Post
danon198901
post 27.03.2013, 00:28:01
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


Cytat(markonix @ 27.03.2013, 00:04:23 ) *
Nie możesz nic wyświetlić czyli przesłać do przeglądarki, a przesyłasz elementy HTML.

FORMULARZ z danymi -> dane z POST do zmiennych -> rysunek <img src="skrypt.php?tu dane ze zmiennych" />
W ten sposób wyświetlisz i obrazek i formularz, jeżeli to nie jest wymagane to po prostu przesyłasz dane z formularza do pliku z generowaniem obrazu.


Mógłbyś troszkę jaśniej? W chwili obecnej nie jestem w stanie pojąć dlaczego zwykłe odebranie $_POST/$_REQUEST wadzi w poprawnym rysowaniu, a niestety w książce na podstawie której się uczę (jak i informacji z google) nie ma wzmianki na ten temat. Najlepiej poproszę o prosty skrypt na przykładzie, który podałem wtedy najłatwiej będzie zobaczyć mi różnice i sposób działania tego skryptu. Z góry dziękuję za wszelką chęć pomocy:)
Go to the top of the page
+Quote Post
ssstrz
post 27.03.2013, 09:25:31
Post #6





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

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


chodzi o to:

  1. <html>
  2. <head>
  3. <title>Koło</title>
  4. <head>
  5. <body>
  6. <?php
  7. header("Content-type: image/png");

w linijce 1 dane do header zostały wysłanye ( i nie można robić tego 2 raz) , w linijce7 robisz to 2 raz
Go to the top of the page
+Quote Post
danon198901
post 27.03.2013, 10:14:37
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


Cytat(ssstrz @ 27.03.2013, 09:25:31 ) *
chodzi o to:

  1. <html>
  2. <head>
  3. <title>Koło</title>
  4. <head>
  5. <body>
  6. <?php
  7. header("Content-type: image/png");

w linijce 1 dane do header zostały wysłanye ( i nie można robić tego 2 raz) , w linijce7 robisz to 2 raz


Aha, ok, kumam. Ale nieco wyżej napisałem również, że mam plik, który nie zawiera header po raz drugi i również nie wyświetla mi obrazka:
  1. <?php
  2.  
  3. $od = $_POST['od'];
  4. $do = $_POST['do'];
  5.  
  6. $image = ImageCreateTrueColor(500, 500);
  7.  
  8. $background = ImageColorAllocate($image, 255, 255, 255);
  9. $color = ImageColorAllocate($image, 250, 20, 20);
  10.  
  11. ImageFill($image, 1, 1, $background);
  12. ImageArc($image, $od, $do, 50, 50, 0, 0, $color);
  13. header("Content-type: image/png");
  14. ImagePng($image);
  15. ?>


Ten post edytował danon198901 27.03.2013, 10:15:17
Go to the top of the page
+Quote Post
markonix
post 27.03.2013, 14:25:16
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Jeżeli wpiszesz ręcznie te liczby to działa?
Jeśli tak to kwestia tego że $_POST nie zawiera tego czego oszukujesz.


--------------------
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 Wersja Lo-Fi Aktualny czas: 23.05.2025 - 05:32