0

SOスレッドから次のコードを使用していますが、出力されるファイルは破損したPNGファイルです。どの画像エディタでも表示できません。取得しようとしている画像は、この直接リンクにあります。

<?php
function getimg($url) {         
        $headers[] = 'Accept: image/gif, image/png, image/x-bitmap, image/jpeg, image/pjpeg';   
        $headers[] = 'Connection: Keep-Alive';         
        $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';         
        $user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31';         
        $process = curl_init($url);         
        curl_setopt($process, CURLOPT_HTTPHEADER, $headers);         
        curl_setopt($process, CURLOPT_HEADER, 0);         
        curl_setopt($process, CURLOPT_USERAGENT, $user_agent);         
        curl_setopt($process, CURLOPT_TIMEOUT, 30);         
        curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);         
        curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);         
        $return = curl_exec($process);         
        curl_close($process);         
        return $return;     
    } 

    $imgurl = 'http://download.videos.framebase.io/5a94a14f-aca6-4fb0-abd3-f880966358ab/6bf94ebb-4712-4895-9c85-fb8d4a19d50c/8f8b778f-6335-4351-82e7-6f50fd7fdd06/1351620000000-000020/thumbs/00001.png'; 
    if(file_exists($imgsave)){continue;} 
    $image = getimg($imgurl); 
    file_put_contents($imgsave,$image); 
?>

私は何が欠けていますか?それは私が使用しているヘッダーですか?ファイルですか?ブラウザ内で手動でファイルを保存しようとしたところ、画像エディタで問題なく読み込まれました。

どんなアイデアでも大歓迎です、ありがとう!-- 24 時間 365 日

編集: これを解決済みとしてマークしたことは知っていますが、考え直して、サーバーが保存しているPNGをまだ表示できません。これまでに提案された内容は次のとおりです。

<?php
            function grab_image($url){
                echo $url;
                  $ch = curl_init ($url);
                  curl_setopt($ch, CURLOPT_HEADER, 0);
                  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                  curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
                  $raw=curl_exec($ch);
                  curl_close ($ch);
                  $saveto = 'recent-image.png';
                  if(file_exists($saveto)){
                      unlink($saveto);
                  }

                  $fp = fopen($saveto,'x');
                  fwrite($fp, $raw);
                  fclose($fp);
                }   

    grab_image("http://download.videos.framebase.io/2acd363b-ab1f-4305-8f1c-c1eaa6ebcc2a/abb6a3b7-414c-461b-a84c-56032060575d/e3682943-6959-456d-89db-8cd96647ddd4/1351620000000-000020/thumbs/00001.png");
?>

私は何度も何度もスクリプトを実行しましたが、うまくいきませんでした。もう一度、助けていただければ幸いです。これが出力する PNGのサンプルです。ありがとうございます。

4

1 に答える 1