使用Mason和PHP生成饭否图片插件

本文详细介绍了如何使用Perl和PHP实现自定义图片插件,用于论坛和博客,包括设置图片格式、处理请求和生成图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

饭否的图片插件可用于论坛,博客,将用户的信息和一些最新动态用图片的形式表现出来。

我们如果需要自行开发此功能的话,需要设置某种格式(或某个地址)的图片采用脚本来处理。

在Perl中的话

例如可以使用Apache的LocationMatch或者FilesMatch指令来进行设置,让某个Perl模块来进行处理。

如果使用Mason的话,更为简单,不需要修改服务器,只需利用dhandler的特性,就可以让指定的脚本来处理。

基本流程如下:

主要代码如下:

my $uri = $r->uri; if($uri =~ /.jpg$/) { $uid = substr($uid, 1, -4); # 从uri里获得用户uid my $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[1][0]; $result = mysql_db_query($mysql_database, $sql_string, $conn); $row = mysql_fetch_row($result); $user_nickname = $row[0]; 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.jpghttp://php.hfahe.cn/r23_1.jpg来取得uid为23的用户的不同样式的图片插件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值