[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 メーリングリストの案内