利用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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值