Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [image] Zapisywanie Utworzonego Obrazka Do Pliku
grohu
post 16.08.2004, 08:25:23
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


w jaki sposob zapisuje sie utworzony obrazek do pliku questionmark.gif?

probowalem tak, ale nie dziala (skrypt uruchamiam spod konsoli - NIE przeglądarki)

  1. <?php
  2. header(&#092;"Content-type: image/png\");
  3.  
  4. $im = @imagecreate($szerokosc, $wysokosc) or die(&#092;"Cannot Initialize new GD image stream\");
  5.  
  6. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  7.  
  8. $kolor = imagecolorallocate($im, 0, 0, 0);
  9.  
  10. imageline($im, 10, 10, 39, 10, $kolor);
  11.  
  12. imagepng($im, &#092;"xxx.png\");
  13.  
  14. imagedestroy($im);
  15. ?>



jak powinno to wyglądać, żeby działało poprawnie questionmark.gif?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
kszychu
post 16.08.2004, 11:15:44
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Spróbuj użyć funkcji z rodziny File functions: http://pl.php.net/manual/pl/ref.filesystem.php


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
grohu
post 16.08.2004, 13:07:09
Post #3





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


fwrite probowalem ale nie wyszlo...
Go to the top of the page
+Quote Post
FiDO
post 17.08.2004, 09:57:50
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


A napiszesz co nie dziala czy mamy bawic sie we wrozki ? Wyskakuje jakis blad (jesli tak to jaki) czy co ?
Skad biora sie zmienne $szerokosc, $wysokosc ?

PS. jesli odpalasz z konsoli to nie musisz wysylac naglowka


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
grohu
post 17.08.2004, 12:17:20
Post #5





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


$wysokosc i $szerokość nie są faktycznie zdefiniowane i to było błędem, ja je zastąpiłem wartościami 300 i 200.

Ale to nie zmieniło problemu.
Obrazek w przeglądarce jest normalnie otwierany, jeśli wyłączę header to w przeglądarce pokazuje się binarna zwartość tego obrazka a nie obrazek.

i tą zawartość chciałbym zapisać do pliku, próbowałem:

  1. <?php
  2. $im = @imagecreate(300, 200) or die(&#092;"Cannot Initialize new GD image stream\");
  3. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  4. $kolor = imagecolorallocate($im, 0, 0, 0);
  5. imageline($im, 10, 10, 39, 10, $kolor);
  6.  
  7. $fp = fopen(&#092;"yyy.png\", \"w\");
  8. fwrite($fp, imagepng($im));
  9. fclose($fp);
  10.  
  11. imagedestroy($im);
  12.  
  13. ?>


ale w ten sposób plik się w ogóle nie tworzy, natomiast w takiej kolejności:
  1. <?php
  2. $fp = fopen(&#092;"yyy.png\", \"w\");
  3. $im = @imagecreate(300, 200) or die(&#092;"Cannot Initialize new GD image stream\");
  4. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  5. $kolor = imagecolorallocate($im, 0, 0, 0);
  6. imageline($im, 10, 10, 39, 10, $kolor);
  7.  
  8. fwrite($fp, imagepng($im));
  9.  
  10. imagedestroy($im);
  11. fclose($fp);
  12. ?>
plik jest tworzony, jednak jego zawartość jest pusta, w jaki sposób mam do niego wrzucić binanrną wartość, która jest pokazywana w przeglądarce po wyłączeniu header questionmark.gif
Go to the top of the page
+Quote Post
tiraeth
post 17.08.2004, 13:36:16
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. <?php
  2. $fp = fopen(&#092;"yyy.png\", \"w\");
  3. $im = @imagecreate(300, 200) or die(&#092;"Cannot Initialize new GD image stream\");
  4. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  5. $kolor = imagecolorallocate($im, 0, 0, 0);
  6. imageline($im, 10, 10, 39, 10, $kolor);
  7.  
  8. fwrite($fp, $im);
  9.  
  10. imagedestroy($im);
  11. fclose($fp);
  12. ?>


questionmark.gif może bez ImagePNG() questionmark.gif
Go to the top of the page
+Quote Post
grohu
post 17.08.2004, 14:19:20
Post #7





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


a wyprobowales to przed wyslaniem questionmark.gif?

bo u mnie nadal plik yyy.png jest pusty exclamation.gif
Go to the top of the page
+Quote Post
harnas
post 18.08.2004, 01:53:22
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.08.2004

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


witam. to moj pierwszy post na tym forum:)

Kod
<?php
header("Content-type: image/png");

$im = @imagecreate(200, 200) or die("Cannot Initialize new GD image stream");

$kolor_tla = imagecolorallocate($im, 255, 255, 0);

$kolor = imagecolorallocate($im, 0, 0, 0);

imageline($im, 10, 10, 39, 10, $kolor);

imagepng($im);
imagepng($im, "xxx.png");

imagedestroy($im);
?>




u mnie dziala. zarowno zapis do pliku jak i wyswietlenie na stronie. zeby wyswietlic musialem dopisac imagepng($im) bo imagepng($im, "xxx.png") tworzy tylko plik ale go nie wyswietla.
Go to the top of the page
+Quote Post
Vengeance
post 18.08.2004, 03:22:43
Post #9





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


a może by tak dać w fopen() drugi paramtetr 'w+' a nie 'w' bo przy 'w' nie utrzorzy ci pliku jeśli on nie istnieje snitch.gif

Trochę to nie dożeczne bo nie stosujesz @ przed funckjami obsługi plików więc powinny być errory, ale może masz wyłączone ?


--------------------
Go to the top of the page
+Quote Post
grohu
post 18.08.2004, 09:09:45
Post #10





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


  1. <?php
  2. $fp = @fopen(&#092;"xxx.png\", \"w+\");
  3.  
  4. header(&#092;"Content-type: image/png\");
  5.  
  6. $im = @imagecreate(200, 200) or die(&#092;"Cannot Initialize new GD image stream\");
  7.  
  8. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  9.  
  10. $kolor = imagecolorallocate($im, 0, 0, 0);
  11.  
  12. imageline($im, 10, 10, 39, 10, $kolor);
  13.  
  14. fwrite($fp, imagepng($im));
  15.  
  16. fclose($fp);
  17. imagedestroy($im);
  18. ?>


ps. przed fwrite też próbowałem stawiać @

a sposob Harnasia to sposób manualowy, który niestety (nie wiem dlaczego) nie chce mi działać.

przeciez musi byc sposob na zapisanie obrazka do pliku mad.gif

Ten post edytował grohu 18.08.2004, 10:49:54
Go to the top of the page
+Quote Post
FiDO
post 18.08.2004, 09:27:17
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


No przeciez jest.. polega on na dodaniu drugiego parametru do funkcji imagepng z nazwa pliku do ktorego zapisac. Jesli bez tego parametru obrazek wyswietla Ci sie w przegladarce prawidlowo to znaczy ze jest ok, tylko sam zapis sie nie udaje (brak praw do zapisu?), a moze walnela Ci sie instalka php, choc to malo prawdopodobne.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
grohu
post 18.08.2004, 10:49:10
Post #12





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


tez uwazam ze to malo prawdopodobne, zreszta skoro dziala w przegladarce to czemu mialoby sie nie dac zapisac do pliku...a jednak cos sie z tym pie*.

watpie zeby to bylo spowodowane przez instalacje php-gtk bo ta przebiegla bezproblemowo.

wiec musze dalej kombinowac bo to dla mnie bardzo wazne zeby zapisac obrazek do pliku.
Go to the top of the page
+Quote Post
Vengeance
post 18.08.2004, 11:27:00
Post #13





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Widze, że mimo podpowiedzi FiDo nadal nie skumałeś.

http://php.net/imagepng

int imagepng ( resource image [, string filename])

podaj drugi argument a powinno zapisac obrazek do pliku.

---edit-
ano tak nie jasno to opisane bylo ;]

Ten post edytował Vengeance 18.08.2004, 12:58:08


--------------------
Go to the top of the page
+Quote Post
grohu
post 18.08.2004, 12:40:25
Post #14





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


Cytat
Widze, że mimo podpowiedzi FiDo nadal nie skumałeś.


SKUMAŁEM, tylko TY nie skumales ze pisze ze mi to NIE dziala exclamation.gif



do tej pory pracowalem pod linuxem ale...

pod windowsem ponizszy kod dziala prawidlowo i generuje plik (spod konsoli, a nie przegladarki)

  1. <?php
  2. $im = @imagecreate(300, 200) or die(&#092;"Cannot Initialize new GD image stream\");
  3.  
  4. $kolor_tla = imagecolorallocate($im, 255, 255, 0);
  5. $kolor = imagecolorallocate($im, 0, 0, 0);
  6.  
  7. imageline($im, 10, 10, 39, 10, $kolor);
  8.  
  9. imagepng($im, &#092;"aaa.png\");
  10. imagedestroy($im);
  11. ?>



musze popracowac nad linuxem i tym problemem...bo nie chce windowsa uzywac.

peAce

Ten post edytował grohu 18.08.2004, 13:42:36
Go to the top of the page
+Quote Post
FiDO
post 18.08.2004, 20:30:37
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Usun malpe z przed imagecreate, upewnij sie ze masz wlaczone raportowanie bledow (display_errors = On i error_reporting conajmniej E_ALL & ~E_NOTICE) i sprawdz czy nie wywala zadnych bledow.
Podaj tez na wszelki wypadek jak dokladnie wywolujesz ten skrypt z konsoli.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
grohu
post 18.08.2004, 21:18:59
Post #16





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


dzieki FiDO exclamation.gif! naprowadziles mnie na dobry tor, odznaczylem @ i wyskoczyl blad - nierozpoznawalna funkcja imagecreate. Nie wiem dlaczego, ale widze ze rozszerzenia uzywane przez php dla przegladarki mam pod linuxem w jednym katalogu, a rozszerzenia uzywane podczas korzystania z php przez konsole... wiec skopiowalem w odpowiednie miesce plik gd.so. a do skryptu tworzacego obrazek dopisalem zmodyfikowana linijke ladujaca rozszerzenie GTK:

  1. <?php
  2. if( !extension_loaded('gd')) { dl( 'gd.' . PHP_SHLIB_SUFFIX); }
  3. ?>


i teraz wszystko dziala juz poprawnie exclamation.gif!



teraz to mam dylemat z innej beczki: php-GTK - wstawianie pol tekstowych (GtkEntry) z okreslona dlugoscia pola... ale raczej nie jest dylemat na TU i TERAZ smile.gif

w kazdym razie PROBLEM UWAŻAM ZA ROZWIĄZANY exclamation.gif
DZIKI WSZYSTKIM
.
Go to the top of the page
+Quote Post
FiDO
post 19.08.2004, 09:08:32
Post #17





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Ech.. normalnie czulem to w kosciach, ze tak bedzie. A to dlatego, ze mialem podobny problem, po prostu php-cli korzysta u mnie z innego php.ini, przez co rozszerzenia sie nie ladowaly, to jednak pod windowsem, wydawalo mi sie ze w linuksie obie wersje korzystaja z tego samego php.ini, ktorego sciezka jest wkompilowana w binarke (a ustawiania podczas ./configure ...).
W kazdym razie kopiowanie nie jest najlepszym pomyslem, odpal sobie php --help jest tam jeden przelacznik, ktorym mozesz jawnie wskazac sciezke do php.ini. Takie rozwiazanie bedzie bardziej eleganckie.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
grohu
post 19.08.2004, 19:10:44
Post #18





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 29.07.2003
Skąd: skąd-inąd.

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


ano faktycznie jest php -z /sciezka/gd.so.
dzieki za pomoc

peAce
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: 14.08.2025 - 05:15