よくある記事ですが、

①PHPを使ってWEBサイトのキャプチャ取得
 ↓
②DB保存
 ↓
③表示

の一連の方法を書きます。


①PHPでキャプチャ取得

WEBブラウザなんかで表示されたページを、
プログラム使ってダイナミックに表示したい
みたいな話しってよくあると思います。

でもframe使いたくなくて、キャプチャ取って
サムネイルで表示したい。。。

という方は、下記APIがオススメです。

「websnapr」
http://www.websnapr.com/

ここで提供されているAPIに、キャプチャを取りたいURLを投げると、
数秒後にサムネイルとして返してくれるというなんとも便利なAPIです。

まあPHPと書いてはみたものの、
全然PHPじゃなくても大丈夫みたいなw

使い方は非常に簡単。

まずサイト上で無料で取得できるdeveloper keyを取得。
そして、下記のようにリクエストを投げてやれば終了です。

<?php

$key = "取得したデベロッパーKEY";
$url = "http://example.com/";

$imgdata = file_get_contents("http://images.websnapr.com/?key=" . $key . "&url=" . $url);

?>

②DB保存

まずはMySQLでバイナリデータを保存できるカラムを作りましょう。
ここではmidiumblobで十分でしょう。

create table tb_thumb(
capture midiumblob
);

そして、先ほど取得した画像データを保存します。

<?php

$key = "取得したデベロッパーKEY";
$url = "http://example.com/";

$imgdata = file_get_contents("http://images.websnapr.com/?key=" . $key . "&url=" . $url);

$query = "insert into tb_thumb (capture) values ('" . addslashes($imgdata) . "')";
mysql_query($query);

?>
※1 本来はmysql_real_escape_stringを使うべきなのでしょうが、
何故かうまく行かない場合があり。。。
※2 DB接続部は省略してます。(mysql_connect)

これでDBへの格納は完了です!


③表示

で、表示です。
今回は非常に簡単なサンプルを。。。


<?php

$sql = "select capture from tb_thumb limit 1";
$result = mysql_query($sql);
while($rs = mysql_fetch_assoc($result)){
$imgdata = $rs['capture'];
}

$size = filesize($imgdata);
header("Content-Length: " . $size);
header("Content-type: image/jpeg");

echo $imgdata;

?>
※DB接続部は省略してあります。(mysql_connect)

このPHPをブラウザから実行してあげれば、
②で格納した画像データがページに表示されます。

簡単ですね。

※ここに書いてあるサンプルソースは適当に書いたので、
動作保証無しです。
何か疑問ある方は、コメント欄にお願いいたします。