|
最近很多大型网站相继推出了一些玩笑性质的新闻,网友们纷纷转载这些新闻让自己的朋友也感受一下新年的惊喜(图1)。

这些玩笑新闻能在开始时骗倒网友的原因是新闻中都含有一张图片,图片中有着网友的网名或者姓名,而且又是来自大型门户网站的新闻,所以能起到以假乱真的效果。更有趣的是这些新闻都提供一个输入别人名字的输入框,只要输入朋友的名字,那么整个新闻从图片到文字部分都会依照输入的新名字发生变化(图2)。

一、基本原理分析
通常来说,要让网站中的文字根据输入框变化是网页最基本的功能之一,所以使用虚拟主机的个人站点站长可以轻松地做出这样的网页,但是对于图片中的文字内容要根据输入框内容变化,则涉及到绘图的问题。一直以来给图片绘图使用最多的地方都是各种水印和需要即时生成图片的股票走势等应用,对于个人站点的站长,绘图并不是一件容易的事。主要原因不是技术上的,而是可能碰到服务器不支持,或者没有安装某些插件,如果自己有主机的站长,可以考虑使用一些容易的命令行绘图软件,如ImageMagick来进行这个操作,只需在程序脚本中嵌入:
安装路径convert -font 字体 -fill 颜色 -pointsize 字体大小 -draw 'text 5,15 "文字内容"'
这个语句就可以使用Image Magick自带的convert程序来进行水印操作,其中text 5,15是文字在图片上左上角开始计算的坐标。ImageMagick的功能非常强大,而且同时支持各种操作系统,所以无论是Windows主机还是Unix类主机,甚至是MacOS等都可以使用。ImageMagick还是免费的开源软件,功能非常强大,甚至可以将它看作是一个具备命令行功能的Photoshop。但是ImageMagick的安装,特别是在Unix类主机下的安装非常麻烦,与很多在Windows系统下ASP程序用来做图的模块一样,它们并不是每一个虚拟主机都会安装的软件。
二、常规解决方案
比较综合的考虑,最常见的环境是PHP+GD支持的虚拟主机。即便是Windows主机也基本对PHP提供了支持,不像ASP在Linux环境只能用模拟器来执行。GD库作图长久以来都是被PHP很好支持的,特别是在PHP4.3.0版后。如果默认安装输入了参数--with-gd,那么会从自带程序包里面安装好GD库,无需复杂的手续。但是PHP对于多字节的支持就没有这么好,在4.3.X版后有一套Multi-Byte String Functions,需要在安装的时候加入--enable-mbstring=all等多个参数才能正常使用,一般PHP环境都没有提供对它的支持。假设你已经安装了对它的支持,那么可以在PHP代码中使用如下语句进行GB2313编码到UTF-8编码的转换,当然它还可以用来转换韩文和日文。
$str = mb_convert_encoding($str, "GB2313", "UTF-8");
对于一个只有PHP和GD的环境,我们需要一个码表(GB2312.TXT)和一个自定义函数(gb2utf8)来完成这个转码的工作。然后使用GD库的绘制图片代码生成一个带有输入文字的图片,最主要的几行代码如下:
header ("Content-type: image/pjpeg"); $photoImage=Image CreateFromJpeg('imgs.jpg'); ImageAlphaBlending($photoImage, true)[1] [2] 下一页 |
|
|
|
|
|
|
|