Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak pobrać obrazek z URL? i wrzucić do obróbki GD
Forum PHP.pl > Forum > Przedszkole
abc
Witam ostatnio bardzo mnie zaciekawił wasz artykuł na stronie głównej waszego wortalu o generowaniu obrazków w php o to link http://wortal.php.pl/wortal/artykuly/php/b...e_grafiki_w_php

Postanowiłem się więc pobawić.
To tak na początek muszę pobrać dany obrazek ale niestety aby mieć dostęp do nie go muszę być zalogowany więc korzystam z cURL i wysyłam zapytanie z cookie a w nim sesją. np. ścieżka jest taka http://kopernik.idl.pl/logo.jpg . Jak dobrze wiecie z cURL ściąga w stringu to ja ją ładuję do zmiennej i próbuje dać jako parametr do funkcji imagecreatefromjpeg($wynik) ale chyba nie jest to właściwe działanie. Właśnie nie wiem jak pobrać ten obraz z wyniku po cURL aby mógł wejść do imagecreatefromjpeg($wynik)? Też zauważyłem że cURL nie radzi sobie z ściąganiem i wyświetlaniem obrazków lepiej mu idzie z html i jak wyłączając transmisje do zmiennej ale na bezpośrednia transmisje to pokazywany jest tekst kod. Mysle że to jest obrazek ale w postaci bitów przesdstawionych w znaki. Jak zrobić żeby zmienna wynikowa po wykonaniu cURL można było użyć jako argumentu do imagecreatefromjpeg($wynik) lub innej lepszej funkcji graficznej?
  1. <?php
  2.  
  3.    $sesja="89b8638fd883e6cdc93340b954174038";
  4.        
  5.    $adres_obrazek="http://kopernik.idl.pl/logo.jpg";
  6.    $c = curl_init();
  7.    curl_setopt($c, CURLOPT_URL, $adres_obrazek);
  8.    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  9.    curl_setopt($c, CURLOPT_COOKIE, "sessionid=$sesja");
  10.  
  11.    $wynik=curl_exec($c);
  12.    curl_close;
  13.    $obrazek=imagecreatefromjpeg($wynik); // jak i co tu zrobić?
  14.  
  15.  
  16. header('Content-Type: image/jpeg');
  17. imagejpeg($obrazek);
  18. echo($obrazek);
  19. echo($wynik);
  20.  
  21. ?>


A i potem po późniejszej przeróbce będę chciał obrazek wyświetlić na razie nie mam na czym ćwiczyć ale czy ten nagłówek i funkcja imagejpeg($obrazek); zostałą prawidło napisana?



EDIT1

Dałem sobie rade znalazłem sposob na ominięcie ale uważam że to nie jest dobre rozwiązanie żeby zgrywać plik na dysk a potem go użyć do zgrywania do funkcji imagecreatefromjpeg() questionmark.gif Czy nie można jakoś bezpośrednio z wyniku cURL przerobić na format do imagecreatefromjpeg() questionmark.gif

Załączam działający kod.


  1. <?php
  2.  
  3.    $sesja="89b8638fd883e6cdc93340b954174038";    
  4.    $adres_obrazek="http://kopernik.idl.pl/logo.jpg";
  5.    
  6.    $c = curl_init();
  7.    curl_setopt($c, CURLOPT_URL, $adres_obrazek);
  8.    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  9.    curl_setopt($c, CURLOPT_COOKIE, "sessionid=$sesja");
  10.  
  11.    $wynik=curl_exec($c);
  12.    curl_close;
  13.    $plik = fopen( 'obrazek.jpg', 'w');
  14.    fwrite($plik, $wynik);
  15.    
  16. $obrazek = imagecreatefromjpeg('obrazek.jpg');
  17. header("Content-Type: image/jpeg");
  18. imagejpeg($obrazek);
  19. imagedestroy($obrazek);
  20.  
  21. // echo($wynik);
  22. ?>
krzysiekk
witam nie jestem do konca pewny ale moze by to w ten sposob mozna bylo zrobic
  1. <?php
  2. $img = file_get_contents('http://xxx.pl/img023.jpg');
  3. echo $img;
  4. ?>
abc
Nie pomaga to samo nawet w trybie binarnym.

  1. <?php
  2. $img = file_get_contents($wynik, FILE_BINARY);
  3. ?>


Ale znowu mi się udało znaleźć rozwiązanie przez analizę. To tak wynik z cURL jest w zmiennej $wynik typu string a nie plikowej aby korzystać z imagecreatefromjpge() lub innych. Znalazłem funkcje z artykułu imagecreatefromstring() i ona może ze strungu pobrać obrazek i to nawet działa. Robi prawidłowy uchwyt.
  1. <?php
  2. $obrazek = imagecreatefromstring  ( $wynik  );
  3. ?>


A Kolego twoje file_get_contents() też jest dobre bo w połączeniu z imagecreatefromstring() umożliwia czytanie każdego typu jpg,gif,png itp pliku
  1. <?php
  2. $obrazek = imagecreatefromstring(file_get_contents($wynik ));
  3. ?>
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.