2009-09-11 8 views
10

Tworzę obraz za pomocą skryptu php za pomocą imagepng. To działa dobrze i dobrze wyświetla się na stronie internetowej. nawet oszczędności, jak daje mi poprawny plik .pngtworzenie obrazu w php, wyświetlacz działa, zapisywanie do pliku nie

header("Content-type: image/png"); 
imagepng($my_img); 
$save = "../sigs/". strtolower($name) .".png"; 
//imagepng($my_img, $save, 0, NULL); 
imagepng($my_img, $save); 

To jest końcowa część kodu używam do generowania pliku i zwraca go jako obraz na stronie internetowej. ale obie opcje (wypróbowane, także ta zaznaczona) nie zapisuj pliku na serwerze internetowym do późniejszego wykorzystania. Folder, w którym zapisano plik, jest ustawiony na chmod 777, aby wykluczyć wszelkie problemy z tym froncie. $ nazwa to na pewno poprawny ciąg bez spacji.

+1

Może powinieneś opublikować kod, w którym faktycznie zapisujesz obraz do systemu plików? – rogeriopvl

+2

@rogeriopvl - tam jest kod, w którym zapisany jest obraz do systemu plików. przeczytaj podręcznik PHP o funkcji imagepng(). – mauris

Odpowiedz

20

Upewnij się, że PHP ma uprawnienia do zapisywać pliki w tym folderze. chmod prawdopodobnie dotyczy tylko użytkowników FTP lub określonych użytkowników.

I wypróbuj po jednym na raz. tj .:

header("Content-type: image/png"); 
imagepng($my_img); 

następnie

$save = "../sigs/". strtolower($name) .".png"; 
imagepng($my_img, $save); 

Tak, że można wyizolować błędy.

Najpierw należy spróbować zapisać w tym samym folderze co skrypt, czy wystąpił jakiś problem.

$save = strtolower($name) .".png"; 
imagepng($my_img, $save); 
+1

uratował mnie dwa razy. UPVOTED! :) –

3

Czy jesteś pewien, że ścieżka względna jest prawidłowa? Może to być nieco mylące, jeśli skrypt jest wywoływany z innego skryptu.

Można spróbować zmienić ścieżkę do:

$save = $_SERVER['DOCUMENT_ROOT'] . "/sigs/" . strtolower($name) . ".png"; 

Edit: I oczywiście sprawdzić wartość zwracaną imagepng() i swój dziennik błędów

8

Bardzo dziękuję za pomoc w oczyszczeniu mojego umysłu i spojrzeniu na mnie z innej perspektywy. Wszystko miało związek z uprawnieniami do pliku.

Gdy skrypt wygenerował plik, prawa nie są ustawione poprawnie, a nadpisanie nie jest możliwe.

po wyjęciu:

header("Content-type: image/png"); 
imagepng($my_img); 

Otrzymałem komunikat o nie jest w stanie napisać. Kiedy ustawiono instrukcję pliku na chmod 755, skrypt działał jak czar.

więc nowy kod wygląda teraz tak:

header("Content-type: image/png"); 
imagepng($my_img); 
$save = "../sigs/". strtolower($name) .".png"; 
chmod($save,0755); 
imagepng($my_img, $save, 0, NULL); 
imagedestroy($my_img); 

Ustawianie plik będzie zapisywany naprawili problem i wszystko działa zgodnie z przeznaczeniem.

poważaniem Fons

+0

To jest niesamowite =) – mauris

1

kodzie, Fons, sprowokowany zwykle problemu byłem mający wyświetlania obrazu tworzony przy użyciu biblioteki GD ale wyłączając żadnego kodu HTML po PHP.Usuwając linię poniżej

header("Content-type: image/png"); imagepng($image); 

i wyłącznie przy użyciu kolejne 2 linie w PHP Udało mi się zapisać plik, a następnie uzyskać dostęp do obrazu w sekcji html (dolna linia kodu) bez niszczenia kodowanie HTML.

$save='./img/Graph.png'; chmod($save,0755); 
imagepng($image,$save,0,NULL); imagedestroy($image); 

<img width="500" height="350" align="top" alt="" src="./img/Graph.png" /> 

Dzięki.