利用php-imagick制作动态显IP论坛图片签名

imagick是专门设计给php用的模块,虽说不如直接在命令行的效率高,但据说效率上比

gd2要快,并且可以做很多高级的操作,支持100+的图像类型,非常之强大,这里仅用它来显

示IP及来源,也就是往图片上“写字”,可以说是大材小用了。ip数据库请自行查找配置,只

要会点php应该就很容易改。如果不想显示ip的来源,只要把源码中的相应部分注释掉即可:

/*如果不显IP来源,注释开始

*/

……………………


/*如果不显IP来源,注释结束*/

 

关于使用,这里也提一下吧,多数的论坛程序提供UBB的签名方式:[img]http://x.x.x.x/sign.php[/img]就行了!

 

//连接数据库,这里用的是discuz!的数据库类 

//config.inc.php中存储了数据库的相关配置 

/*如果不显IP来源,注释开始*/

include './config.inc.php'; 

include './db_mysql.class.php'; 

$db = new dbstuff; 

$db->connect($dbhost, $dbuser, $dbpasswd, $dbname, 0, TRUE, $dbcharset); 

//数据库的名字叫signpic,其中存了ip数据库 

$db->select_db('signpic'); 

/*如果不显IP来源,注释结束*/

//字体文件的路径,我用的是微软雅黑 

$font="./MSYHBD.TTF"; 

//用来当做背景的图片 

$imgpath = 'chuanglian.png'; 

//图片上显示的文字 

$word = '我就是显示IP而已,没有别的意思~'; 

//文字大小 

$fontsize = 20; 

//文字颜色,这个根据你的图片而定,不然看不到字了 

$color = "black"; 

/*如果不显IP来源,注释开始*/

//获取用户的IP地址  

$ip = $_SERVER['REMOTE_ADDR']; 

//将IP地址转化为十进制,便于进入数据库查询 

$iparray=explode('.',$ip); 

$ipint=($iparray[0] * 256*256*256) + ($iparray[1]*256*256) + ($iparray[2]*256) +

$iparray[3]; 

//查数据库,得到IP的来源存在$from变量中 

$sql = "select province, city, subcity from sp_ipaddress where $ipint>start and

$ipintfetch_first($sql); 

/*如果不显IP来源,注释结束*/

if($row=="") 

    $from = "来源未知"; 

}else

//这是查出来的三个项,省,城市,县——这个根据你的IP数据库的情况自己确定 

    $from = $row['province'].'.'.$row['city'].'.'.$row['subcity']; 

//读取用户是什么浏览器 

$useragent = $_SERVER["HTTP_USER_AGENT"]; 

//只识别两种MSIE和FirFox 

if(stripos($useragent,"firefox")){ 

    $browser="FirFox"; 

}elseif(stripos($useragent,"MSIE")){ 

    $browser="MSIE"; 

//生成显示文字,包含IP,来源和加的话 

$text = "你的IP: $ip 浏览器: $browser/n来自: $from/n".$word; 

//读入背景图片 

$image = new Imagick( $imgpath  ); 

$image->setImageFormat( "png" ); 

//生成画笔 

$draw = new ImagickDraw(); 

//设置对齐方式,这里是居中对齐 

$draw->setGravity( Imagick::GRAVITY_CENTER ); 

//设置字体 

$draw->setFont( $font ); 

//设置字体大小 

$draw->setFontSize( $fontsize ); 

//设置文字颜色 

$textColor = new ImagickPixel( $color ); 

$draw->setFillColor( $textColor ); 

//往图片上写文字 

$image->annotateImage( $draw, 0, 0, 0, $text ); 

//输出最后的结果 

//header来表明MIME 

header( "Content-Type: image/png" ); 

echo $image;

本程序单用户本收集于网络。本人只是针对程序进行部分更进 主要更新: 1.增加检查IE7浏览器功能,并显示 2.修改为多用户版(含原来单用户版,单用户版为IpdImg.asp文件) 3,增加显示时间读取(以服务器时间为标准) 程序只有一个风格,如果需要多风格多用户版(用户可自己选择风格),可以联系QQ89364178(不包做图,只收程序制作费) 程序使用方法 程序本人未做任何美化操作,只是做了简单的结构以及数据库,所以如果你想要美化的话,请自己将index.asp文件里边的内容按照指示进行放置到你想放置的地方去。 如果需要使用单用户版请先修改inc/Const.asp里边的gezz、yuju以及yuju2这3个值(请按指示操作) 如果不需要多用户版的,可以删除index.asp、IpImg.asp以及#db221.mdb这三个文件即可 特别说明 如果有朋友肯做出好看漂亮的图与我分享,我今后将会永远提供技术服务(仅限此程序),并承诺我写的升级版本程序绝对与其分享。 图片使用方法 多用户请浏览index.asp并根据提示操作 单用户请使用http://程序放置目录/ipimg.asp作为图片地址 也可以自己制作SKINS目录SKINS即是默认的模板.做图的时候一定要用BMP8位的否则不能正常显示。 '修改时要注意: '您制作IP签名图片必须是8位BMP格式 '图片宽度最好大一点,因为有些IP定位的地址会很长
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值