[PHP-users 34497] Re: PNG画像の取得と保存
山本 正浩
yamamoto @ thinkmeta.jp
2009年 4月 9日 (木) 16:41:14 JST
yamamotoです。
> 後半部分を以下のように変更
> $pngs="";
> while (!feof($fp)) {
> $tmp = hexdec(fgets($fp));
> if (!$tmp) break;
> $pngs=fread($fp, $tmp);
> fgets($fp);
> fwrite($ofp,$pngs);
> }
pecl_httpが入っている環境であれば、http_chunked_decode()で対応できるようです。
while (!feof($fp)) {
$pngs .= fread($fp,8192);
}
fwrite($ofp, http_chunked_decode($pngs), 8192);
私も詳しくなかったので勉強になりました。
2009/04/09 16:10 Michiyoshi Buniu <buniu @ dream-link.jp>:
> 豊丹生と申します。
>
> HTTP1.0に変更すると、できそうですが、
> チャンク形式にちょっと興味があったので、
> 最初に提示頂いたスクリプトのを
> HTTP1.1用にちょっと改造してみました。
>
> 2回目の
> $headers=fgets($fp, 4096);
> をコメントアウト
> ※このコメントアウトは
> HTTP1.0にした場合も必要だと思います。
>
> 後半部分を以下のように変更
> $pngs="";
> while (!feof($fp)) {
> $tmp = hexdec(fgets($fp));
> if (!$tmp) break;
> $pngs=fread($fp, $tmp);
> fgets($fp);
> fwrite($ofp,$pngs);
> }
>
> 私の環境ではこれでOKでした。
>
> ----- Original Message -----
> From: "藤本悟司" <satoshi @ try-square.co.jp>
> To: "PHP-users ML" <php-users @ php.gr.jp>
> Sent: Thursday, April 09, 2009 3:41 PM
> Subject: [PHP-users 34493] Re: PNG画像の取得と保存
>
>
>> 藤本と申します。
>>
>>> $out = "GET
>>> /ifs/ifs?cont=ym+m9&size=260x155&period=V&varminutes=5&bartype=CANDLE&bardensity=MEDIUM&?527
>>> HTTP/1.1\r\n";
>>
>> HTTP1.1を使っているようですね。
>> レスポンスがチャンク形式で返っているのではないでしょうか?
>> http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec3.6.1
>>
>> HTTP1.0ならば、受け取るエンティティはそのままバイナリイメージのはずです。
>> 試しにHTTP1.0に変えてみてください。
--
-<Thinkmeta>------------------------------------------
<?xml version="1.0" encoding="ISO-2022-JP" ?>
<signature>
<name>山本 正浩[Masahiro Yamamoto]</name>
<mail>yamamoto @ thinkmeta.jp</mail>
<web>http://www.thinkmeta.jp/</web>
</signature>
PHP-users メーリングリストの案内