Skocz do zawartości
Matrix_

HTML/PHP odczyt obrazka ze strony

Rekomendowane odpowiedzi

Cześć,

słuchajcie jest taka strona http://apod.nasa.gov/apod/astropix.html i potrzebowałbym mieć zdjęcie tego APOD-a. Zawsze aktualne oczywiście :P

Jest http://apod.oa.uj.edu.pl/apod.jpg - może jest to aktualne ale troszkę za małe...

 

Znalazłem takie coś:

https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY

 

Jeśli dobrze rozpoznaje to jest JSON:

Próbowałem coś robić z:

GML
json_decode(file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY'););

Ale nie znam się za bardzo na jsonie

 

Albo jakiś sposób na zrobienie include strony, ale wywalając cały jego tekst?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
$urltostr = file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');

$jsdec = json_decode($urltostr,true);

$jpgurl = $jsdec['url'];

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
$urltostr = file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');

$jsdec = json_decode($urltostr,true);

$jpgurl = $jsdec['url'];

 

dzięki wielkie, próbowałem takiego czegoś, ale true zabrakło

 

A da się zrobić, żeby np. tutaj na forum po zrobieniu:

GML
imagetaker.php#image

strona zwracała link do zdjęcia? Albo coś podobnego?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Znalazłem coś takiego

<?php
// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;
?>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

GML
<?php

// open the file in a binary mode

$urltostr = file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');

 

$jsdec = json_decode($urltostr,true);

 

$jpgurl = $jsdec['url'];

 

$name = $jpgurl;

$fp = fopen($name, 'rb');

 

// send the right headers

header("Content-Type: image/jpeg");

header("Content-Length: " . filesize($name));

 

// dump the picture and stop the script

fpassthru($fp);

exit;

?>

 

To nie chce działać. Nie wiem czemu.. Przecież $jpgurl to zwykła ścieżka zdjęcia. To samo co "/images/zdjecie.jpeg"...

Chyba że on nie moze otworzyć pliku poza stroną...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przy takim czymś fopen wywali chyba błąd, nie możesz otworzyć pliku z zewnętrznego serwera. Co chcesz dokładnie zrobić?

 

E: zamiast fopen możesz użyć file_get_contents

 

E2: Tylko filesize też nie będzie działać, więc może lepiej było by skopiować obrazek na twój serwer, albo użyć curl chyba najlepsza opcja.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
<?php
$data = file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');
$options = json_decode($data, true);
$image = file_get_contents($options['url']);
$imageRes = imagecreatefromstring($image);
header('Content-Type: image/jpeg');
imagejpeg($imageRes);
imagedestroy($imageRes);

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Przy takim czymś fopen wywali chyba błąd, nie możesz otworzyć pliku z zewnętrznego serwera. Co chcesz dokładnie zrobić?

 

E: zamiast fopen możesz użyć file_get_contents

 

E2: Tylko filesize też nie będzie działać, więc może lepiej było by skopiować obrazek na twój serwer, albo użyć curl chyba najlepsza opcja.

 

Właśnie tak myślałem, że to problem z tym, że to jest zewnętrzne zdjęcie... Ale nie chce mi się na razie ogarniać PHP to nie wiedziałem czym to zastąpić :P

Dzięki za pomoc...

 

<?php
$data = file_get_contents('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');
$options = json_decode($data, true);
$image = file_get_contents($options['url']);
$imageRes = imagecreatefromstring($image);
header('Content-Type: image/jpeg');
imagejpeg($imageRes);
imagedestroy($imageRes);

 

Dzięki! Właśnie o to mi chodziło!

Super :P

thank-you-note.jpg

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×