使用Mason和PHP生成饭否图片插件
饭否的图片插件可用于论坛,博客,将用户的信息和一些最新动态用图片的形式表现出来。我们如果需要自行开发此功能的话,需要设置某种格式(或某个地址)的图片采用脚本来处理。
在Perl中的话
例如可以使用Apache的LocationMatch或者FilesMatch指令来进行设置,让某个Perl模块来进行处理。
如果使用Mason的话,更为简单,不需要修改服务器,只需利用dhandler的特性,就可以让指定的脚本来处理。
基本流程如下:
主要代码如下:
my $uri = $r->uri;if($uri =~ /.jpg$/) { $uid = substr($uid, 1, -4); # 从uri里获得用户uidmy $image_template_path = $m->callers(0)->source_dir. '/images/'; # 背景图片文件夹my $username = User::getUserName($uid);$counter = ImageCreate::create($total, $username, $image_template_path); # 创建图像$r->content_type('image/jpg');$r->headers_out;print $counter;}
PHP的话,大同小异,例如可以在Apache里或者.htaccess文件设置:
<Directory /var/www/php.hfahe.cn>RedirectMatch ^/(.*)\.jpg$ /avatar.php?type=$1</Directory>
PHP代码如下所示:
include ('lib/conn.php');// 从参数取得用户id$input_param = $_GET["type"];preg_match_all("|r(.*)_|U", $input_param, $preg_out);// 从数据库中取得用户昵称$sql_string = "select username from user where id = " . $preg_out;$result = mysql_db_query($mysql_database, $sql_string, $conn);$row = mysql_fetch_row($result);$user_nickname = $row;header("content-type:image/jpeg");// 新建一个图片宽119 高 126 像素 $background_image = imagecreatetruecolor(119, 126);// 取得文字颜色, RGB $background_color = imagecolorallocate($background_image, 250, 228, 130);// 读取我们的背景图片$source_image = imagecreatefrompng('images/u0_2.png');// 把背景图片 copy 到我们要输出的图片上 imagecopy($background_image, $source_image, 0, 0, 0, 0, 119, 126);// 使用支持中文的字体$text_font = '/usr/share/fonts/vista/MSYH.TTF';$text_size = 10;// 将用户昵称写到图片上imagettftext($background_image, $text_size, 0, 8, 40, $background_color, $text_font, $user_nickname);// 输出 PNG 图片内容 imagejpeg($background_image);// 关闭之前使用的图片缓冲imagedestroy($background_image);imagedestroy($simage);
此时我们访问r23_0.jpg就可以出现我们需要的图片,用户可以使用http://php.hfahe.cn/r23_0.jpg,http://php.hfahe.cn/r23_1.jpg来取得uid为23的用户的不同样式的图片插件。
页:
[1]