トップページへ戻る

PHPへの扉
- Gateway to PHP -

概要
このページは個人的に作ったPHPのコードを開示しているページです。あんまり更新頻度はよくないと思いますが、こういった方面に興味があればお使いください。
Languages
Links PHP関係のリンク
レッツPHP!
画像BBSが公開されているホームページ
PHP
PHPの本家。search forに関数名を突っ込むと関数仕様がでてきます。ヘルプには非常に重宝。
PostgreSQL
PHPと親和性のいいRDB「PostgreSQL」です。
PHPの日本のユーザ会
メーリングリストに登録しとくと有益な情報があるかも。
PHP
PHP研究所。といっても、PHP Hypertext Processorではなくて、Peaceand Happiness through Prosperityのほうですが。出版社ですね。ビジネス書籍ではお世話になります。
Sitemap サイトマップ
GPSについて
GPS使った軌跡ログのとり方やforetrex 101の使用記などGPSに関する話題を公開しているページです。
淀川サイクリングについて
うちの子と淀川河川敷サイクリングの記録のページです。foretrexでルート記録とりはじめました。
PHPについて
趣味で作っているPHPスクリプトを公開しているページです。Exif,GPS絡みのPHPスクリプトを公開しています。
PCについて
HP Pavilion DV6100/CTやおうちサーバなどPC全般に関しての話題を公開しているページです。
ブログ
GPSへの扉のブログです。GPS・サイクリング・お手製ソフトの話を中心につれづれなるままにつらつらと。。。
SUPPORT掲示板
公開しているソフトの不具合や要望などはこちらにどうぞ。
旧ブログ
〜2006年までのブログ
E-Mail

メールを返す保証は全くありませんが、連絡先は上記のとおりです。
 url2bmpを使ったWebのスクリーンキャプチャサーバ
Mashup Award 3rdにあるhtml2pdfを使ってウェブのスクリーンキャプチャを撮るのに利用させてもらっていました。しかし、これが、遅い&機能しないで全然使い物にならない代物だったんで、使うのやめてたんですが、いろいろと同様のものがないかと探してました。で、たまたまフリーウェアで、url2bmpというソフトがあったんで、これとphpを使って同様のサーバを作ってみました。

これで、http://hogehoge.jp/w2p.php?bx=400&by=400&url=http://www.uneune.jp とかすると、http://www.uneune.jpの400x400のサイズのpngのイメージが表示されます。



以下ソース。zip圧縮したコードはこちら
<?php
	// 使用する前に:
	// GDライブラリの有効化と
	// http://www.pixel-technology.com/freeware/url2bmp/ が必要です。
	// また、Windows環境下であることが必要です。
	//
	// Usage:
	// http://hogehoge.jp/w2p.php?bx=400&by=400&url=http://www.uneune.jp
	// bx=横幅(pixel数) by=縦幅(pixel数) url=キャプチャしたいurl
	// 上記例ではwww.uneune.jpのurlを400x400のサイズでキャプチャします。
	//
	// 履歴
	// ver.0.2 2007.09.24 imagecopyresampledを使ってリサイズ画像の画質を高画質化
	//                    エラールーチンの強化
	// ver.0.1 2007.09.17 初版
	//
	// 本コードについて:
	// 本コードの改変等は自由です。著作権は放棄していません。
	// Copyright 2007 ETOH Hiroki.(http://etoh.minidns.net/php/)
	//
	
	// 初期値(extractで書き換えられることを想定した変数)
	$bx=256; // bxが指定されなかったときの初期値
	$by=256; // byが指定されなかったときの初期値
	$url="http://www.msn.com"; // urlが指定されなかったときの初期値

	// コマンドライン展開(上記初期値はコマンドラインにあればオーバライト)
	extract($_REQUEST, EXTR_OVERWRITE);

	// 初期値その2(extractで書き換えられると困る変数)
	$basex=1024; // webをキャプチャする元のサイズ
	$basey=1024; // 
	$imgdir  = dirname($_SERVER[PATH_TRANSLATED])."\\img\\"; // キャッシュ格納ディレクトリ
	$exepath = "C:\\task\\url2bmp.exe"; // 実行ファイルパス

	// 変なサイズが指定されたときははじく
	if ($bx >1024 || $by >1024 || $bx<1 || $by<1)
	{
		errorpng("Argument bx or by is/are out of range.");
		exit(0);
	}

	// ファイル名をハッシュ生成
	$hashvalue = 'w2p_'.md5( $url.'bx'.$bx.'by'.$by ).'.png';
	$output= $imgdir.$hashvalue;
	
	// ファイルがなければ、url2bmpを使ってurlを生成。
	if (!file_exists($output))
	{
		$tmp_output= $imgdir.$hashvalue.'.png';
		$commandline  = $exepath.' -url '.$url.' -file "'.$tmp_output.'" -format PNG ';
		$commandline .= '-wx '.$basex.' -wy '.$basey.' -bx '.$basex.' -by '.$basey;
		$commandline .= ' -wait 5 -removesb -notinteractive';
		$last_line = system($commandline, $retval);
	    $tmp_img = imagecreatefrompng($tmp_output);
 		if (!$tmp_img)
 		{
 			errorpng("Failed to create webshot.");
	 	}
	 	$img = imagecreatetruecolor($bx, $by);
	 	imagecopyresampled( $img, $tmp_img, 0, 0, 0, 0, $bx, $by, 1024, 1024 );
 		if (!$img)
 		{
 			errorpng("Failed to resizing.");
	 	}
		unlink($tmp_output);
	    imagedestroy($tmp_img);
 	}
 	else
 	{
	    $img = imagecreatefrompng($output);
 		if (!$img)
 		{
 			errorpng("Failed to reloading image.");
	 	}
 	}
 	// GDを使ってリサイズ
    //画像出力
    if ($img)
    {
	    header("Content-type: image/png");
    	header("Cache-control: no-cache");
    	imagepng($img);
    	imagepng($img, $output); // キャッシュ用にファイル出力しておく

    	//画像消去(メモリから)
   	 	imagedestroy($img);
   	}
   	
   	// @brief エラー表示関数
   	//
   	//
   	function errorpng($str)
   	{
        $img  = imagecreatetruecolor(400, 30); /* 空の画像を作成 */
        $bgc = imagecolorallocate($img, 255, 255, 255);
        $tc  = imagecolorallocate($img, 0, 0, 0);
        imagefilledrectangle($img, 0, 0, 400, 30, $bgc);
        /* エラーメッセージを出力 */
        imagestring($img, 3, 5, 5, $str, $tc);

	    header("Content-type: image/png");
    	header("Cache-control: no-cache");
       	imagepng($img);
       	exit(0);
	}
?>

上記、url2bmpのweb siteならこんな感じで取ってこれます。

Google

©2004-2005 et's PHP page

counter