Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pobranie obrazka i zapisanie na localu
Forum PHP.pl > Forum > Przedszkole
-mic22-
Witam!
W jaki sposób można pobrać obrazek z np. http://strona.pl/obrazek.png i zapisać go na localu?
Próbowałem tak:
  1. <?php
  2. $handle = fopen("http://strona.pl/obrazek.png", "rb"); 
  3.  stream_set_write_buffer($handle, 0);
  4.  $fp = fopen("test.png", "wb");
  5.  $data = fread($handle, 8000);
  6.  fwrite($fp, $data);
  7.  fclose($fp);
  8.  fclose($handle);
  9. ?>


Zapisuje mi tylko 8kB obrazka, reszta jest czarna. nie pomaga nawet stream_set_write_buffer();
Z góry dzięki sadsmiley02.gif
dadexix
Kod
if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_PNG) {
imagecreatefrompng("http://strona.pl/obrazek.png")
imagepng($image,$nazwa);
}
if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_GIF) {
imagecreatefromgif("http://strona.pl/obrazek.gif")
imagepng($image,$nazwa);
}
if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_JPEG) {
imagecreatefromjpeg("http://strona.pl/obrazek.jpg")
imagepng($image,$nazwa);
}


zrób coś w tym rodzaju.... w ogóle to zapraszam http://pl2.php.net/manual/pl/ref.image.php
Gość
"Warning: imagepng(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\p_dp\p_1.php on line 35"
dadexix
ahh troche chciałem "na skróty" haha.gif
  1. <?php
  2. if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_PNG) {
  3. $image = imagecreatefrompng("http://strona.pl/obrazek.png")
  4. imagepng($image,$nazwa);
  5. }
  6.  
  7. if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_GIF) {
  8. $image = imagecreatefromgif("http://strona.pl/obrazek.gif")
  9. imagepng($image,$nazwa);
  10. }
  11. if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_JPEG) {
  12. $image = imagecreatefromjpeg("http://strona.pl/obrazek.jpg")
  13. imagepng($image,$nazwa);
  14. }
  15. ?>
qrees
Cytat(-mic22- @ 25.11.2007, 10:11:57 ) *
Witam!
W jaki sposób można pobrać obrazek z np. http://strona.pl/obrazek.png i zapisać go na localu?
Próbowałem tak:
  1. <?php
  2. $handle = fopen(&#092;"http://strona.pl/obrazek.png\", \"rb\"); 
  3.  stream_set_write_buffer($handle, 0);
  4.  $fp = fopen(&#092;"test.png\", \"wb\");
  5.  $data = fread($handle, 8000);
  6.  fwrite($fp, $data);
  7.  fclose($fp);
  8.  fclose($handle);
  9. ?>


Zapisuje mi tylko 8kB obrazka, reszta jest czarna. nie pomaga nawet stream_set_write_buffer();
Z góry dzięki sadsmiley02.gif

Jak sam zauważyłeś, pobierane jest tylko 8kb obrazka. A to dlatego, że sam w programie wpisałeś żeby pobierał 8000 bajtów:
  1. <?php
  2. $data = fread($handle, 8000);
  3. ?>

Drugi argument fread to ilość bajtów które mają być odczytane. Proponuje odczytywać to w pętli dopóki fread coś zwraca.
Aczkolwiek rozwiązanie dadexix nie jest złe ;)
dadexix
Cytat
Aczkolwiek rozwiązanie dadexix nie jest złe winksmiley.jpg
chyba lepsze bo jeśli zrobi się to tym drugim sposobem to skrypt nie sprawdze czy jest to obraz czy nie więc można wsadzić każde dane w tamtym miejscu... przez co ktoś może wyświetlić swój kod HTML z Twojego servera....

można Twoim sposobem dodając na początku
  1. <?php
  2. if (exif_imagetype('http://strona.pl/obrazek.png') == IMAGETYPE_PNG || 'http://strona.pl/obrazek.png') == IMAGETYPE_JPEG || 'http://strona.pl/obrazek.png') == IMAGETYPE_GIF || 'http://strona.pl/obrazek.png') == IMAGETYPE_BMP || 'http://strona.pl/obrazek.png') == IMAGETYPE_PSD) {
  3.  
  4. SKRYPT
  5.  
  6. } else { die "Halo!! ja chce obrazki a Ty mi tu jakieś inne dajesz... no no nie ładnie!"};
  7. ?>

oczywiście typy mozesz dodać inne zgodnie z exif-imagetype" title="Zobacz w manualu PHP" target="_manual
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.