-->

« 【アルカディア】ネットの海を表現してみました | メイン | 【Arcadia】アルカディア号、操縦桿と出会う »

2007年1 月21日 (日)

【アルカディア】Webページのサムネール生成コード

トグサです。
ケイスがつくっている面白すぎるアルカディアですが、
サムネール生成サーバが動いているサーバは、
MacMini上のParallelsで動いているUbuntuなので、重い&偶に落ちます。
まぁそれは仕方無いのですが、問題は、その度に私の前(MacMiniがある)に来ては、
「また落ちた!重い!もー!全画面からもどせねー!」と叫んで行く事です!

毎日これでは、またシリコン鉱床に埋もれかねないので、
もうちょっと安定し、さらに簡易キャッシュ機能をもたせたサムネール生成サーバを30分くらいでつくりました。

Windowsマシン+CrenaHtml2jpgApache2PHPです。

すべて普通にインストールして、このPHPスクリプトを置きます。

<?php
$crena_exe_path = "C:\\ht_cgi\\crena\\CrenaHtml2jpg.exe";
$crena_image_quarity = 85;
$crena_timeout_sec = 15;
$cache_timeout_sec = 60 * 5;
$image_data_path = "C:\\ht_cgi\\img\\";

function safe_cmd_sanitize_string( $_str )
{
    return strtr( $_str, "\\>\"&<| \0", "________" );
}

function conv_intval( $_str, $_min, $_max, $_err_default )
{
    $val = intval( isset($_GET[$_str]) ? $_GET[$_str] : "0" );
    return ($val < $_min || $_max < $val) ? $_err_default : $val;
}

$cache_str = "";
$cache_str .= "_" . ( $url = safe_cmd_sanitize_string( $_GET['url'] ) );
$cache_str .= "_" . ( $width   = conv_intval( 'width', 32, 1280, 640 ) );
$cache_str .= "_" . ( $height  = conv_intval( 'height', 24, 1024, 480 ) );
$cache_str .= "_" . ( $dwidth  = conv_intval( 'dwidth', 32, 1280, 1024 ) );
$cache_str .= "_" . ( $dheight = conv_intval( 'dheight', 24, 1024, 768 ) );

$file_name = $image_data_path . md5( $cache_str ) . ".jpg";
if( !file_exists( $file_name ) || $cache_timeout_sec < (time() - filemtime( $file_name )) )
    system( "$crena_exe_path -o\"{$file_name}\" -fjpeg -w{$dwidth}x{$dheight} -s{$width}x{$height} -q$crena_image_quarity -t$crena_timeout_sec -u$url" );

header("Content-type: image/jpeg");
readfile( file_exists( $file_name ) ? $file_name : "{$image_data_path}na.jpg" );

?>

後は、こいつを、
http://localhost:8088/index.php?url=http%3A%2F%2Fwww.hogehogex.jp%2F&width=640&height=480
みたいにして呼べばOK。

CrenaHtml2jpgが外部呼出しを前提につくってあるので、楽につくれました。ありがたいですね。どうやら、あちら側でも盛んにつかわれてるようです。

あとは、PHPの設定を、他の余計なコードが実行されないように設定したほうがいいですね。

このエントリーをはてなブックマークに追加

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a0120a713b5fd970b0120a713b71f970b

Listed below are links to weblogs that reference 【アルカディア】Webページのサムネール生成コード:

関連書籍-Kindle

iTunesStoreで評価する

フォトアルバム

他のサービス

Twitter
powered by TypePad
登録年月 2005年10月