[PHP-users 34491] PNG画像の取得と保存

namacha dual_shuccha @ yahoo.co.jp
2009年 4月 9日 (木) 14:41:21 JST


こんにちは
hiroseといいます。

あるサイトからPNGの画像を取得しファイルとして保存しようとしていますが
画像内容が壊れてしまいます。
具体的には以下ですが、ブラウザで取得した画像内容とPHPで取得したものとの内容を
バイナリレベルで比較すると微妙に異なってしまいます。
fread とfwriteのどこかで何らかの変換が起こるのでしょうか?
よろしくおねがいします。

ちなみに対象は
http://charts.quote.com/ifs/ifs?cont=ym+m9&size=260x155&period=V&varminutes=10&bartype=CANDLE&bardensity=MEDIUM&?527
(以下は生ソースです)
copy(url,file)でやると相手サーバーからエラー返されるので fsockでやってます。
PHP Version 4.4.9
--------------------------------------------------------------------------
$newfile="new.png";
$ofp = fopen($newfile, 'w');

$fp = fsockopen("charts.quote.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
   
    $out = "GET /ifs/ifs?cont=ym+m9&size=260x155&period=V&varminutes=5&bartype=CANDLE&bardensity=MEDIUM&?527 HTTP/1.1\r\n";
    $out .= "Accept: */*\r\n";
    $out .= "Accept-Language: ja\r\n";
    $out .= "Accept-Encoding: gzip, deflate\r\n";
    $out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n";
    $out .= "Host: charts.quote.com\r\n";
    $out .= "Connection: Keep-Alive\r\n\r\n";

   
    fwrite($fp, $out);

    while (!feof($fp)) {
        $headers=fgets($fp, 4096);
        if(trim($headers)==""){
            $headers=fgets($fp, 4096);
            break;
        }
    }

    $pngs="";   
    while (!feof($fp)) {
        $pngs=fgets($fp,8192);
        fwrite($ofp,$pngs,8192);
    }

    fclose($fp);
    fclose($ofp);
}

-----------------------------------------------------------------





PHP-users メーリングリストの案内