您的位置:首页 > 编程语言 > PHP开发

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

2010-04-16 20:18 405 查看
饭否的图片插件可用于论坛,博客,将用户的信息和一些最新动态用图片的形式表现出来。

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

在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的用户的不同样式的图片插件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: