难耐寂寞就蠢蠢欲动,我想到大多的论坛都有的签名功能,签名中往往可以包含图片,如果能把咱博客的更新自动生成图片,那泡论坛发水帖的同时不也顺便替宣传了博客的最新更新了么。
说干就干,自己一直对php的gd库了解不多,正可以趁这个机会给自己扫个盲。
首先,准备好一张图片,作为原始签名图片,留下足够的空白区域来写文字内容。如下图:

使用php获取最新更新文章的标题和时间,将这些内容写在图片空白处。程序如下:
//original_signature.jpg 原始签名图
$im = imageCreateFromJpeg('original_signature.jpg');
$color = ImageColorAllocate($im,0,0,0);
//$new_posts 最新更新的文章
$new_posts = $Post->field('title,date')->where(array('status'=>2))->order('date DESC,dateline DESC')->limit(4)->select();
//$posts 要写入图片上的字符串
$posts = '';
foreach($new_posts as $v)
{
$posts .= '·'.$v['title'].'('.$v['date'].')'."\n";
}
imagefttext($im,10,0,110,50,$color,'simsun.ttc',$posts,array('linespacing'=>1.2));
//signature.jpg 最终生成的签名图片
imageJPEG($im,'signature.jpg');
最终生成的签名图片:

程序中用到的图片处理函数有三个:
1.imageCreateFromJpeg() 从给定的路径或者url获取图片,建立一个图像资源,并返回一个图片资源
参数只有一个,可以是本地路径,也可以是URL地址。
类似的函数还有imageCreateFromPng()、imageCreateFromGif(),我的原始图片是jpg格式,所以使用imageCreateFromJpeg(),如果是其他格式,则使用相对应格式的函数。
这样依据图片格式选用不同函数方式多少有点不方便,php也有提供通用的处理函数:ImageCreateFromString(),只要是php支持的图像格式,它都可以处理,使用方式如下:
$content = file_get_contents('original_signature.jpg');
$im = ImageCreateFromString($content);
2. ImageColorAllocate(),配色,得到一个颜色。
有四个参数,第一个参数是图像资源,第二三四个参数,是RGB值,例如$color = ImageColorAllocate($im,0,0,0),获得一个黑色。
3.imagefttext(),将文字以指定的方式写入到图像的指定位置。
有九个参数,第一个参数:图像资源。
第二个参数:文字大小,像素
第三个参数:文字旋转的角度
第四个参数:文字横向距左边缘的偏移值
第五个参数:文字纵向距顶边距的偏移值
第六个参数:文字颜色值
第七个参数:字体文件路径
第八个参数:要写入的文字内容
第九个参数:数组,额外参数,array('linespacing'=>1.5),行距,1.5即是150%的行距
本博客文章非特别注明均属原创,如需转载请保留本博客地址:http://dao.daimaku.com
[