记录学习与后端知识并分享学习代码过程(会飞的鱼Blog)

论坛动态签名图片制作

会飞的鱼 1 1607 2017年10月12日

曾在某些论坛看到过有人使用这种动态签名,开始我也在用,可后来想着还是自己做一个比较好玩,自由DIY。

传送

对于我这种啥都是半吊子的人想了一会,原理采用PHP文字水印生成。那么话不多说

首先确定你制作什么样式,我就仿照这个尺寸的记事本自己做了一个,需要的东西是处理过的记事本图片,字体文件,以下是代码

<?php
date_default_timezone_set('PRC'); //时区设置
error_reporting(0); 
@header("content-Type: text/html; charset=utf-8"); 
//以下是用来统计你在论坛别人视奸你的次数及IP,用txt记录。
$counter_file = ("counter.txt");//手动建立counter.txt文件用来记录访问次数
$visits = file($counter_file);
$visits[0]++;
$fp = fopen($counter_file,"w");
fputs($fp,"$visits[0]");
fclose($fp);
$num=$visits[0].'次';
if(getenv('HTTP_CLIENT_IP')) { 
$onlineip = getenv('HTTP_CLIENT_IP'); 
} elseif(getenv('HTTP_X_FORWARDED_FOR')) { 
$onlineip = getenv('HTTP_X_FORWARDED_FOR'); 
} elseif(getenv('REMOTE_ADDR')) { 
$onlineip = getenv('REMOTE_ADDR'); 
} else { 
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; 
} 
$ip=$onlineip;
//用于记录访问信息,可删
//统计这个来干嘛,有病_(:з」∠)_
logResult($ip);
function logResult($word='') {
    $fp = fopen("log.txt","a");//手动建立log.txt文件用来记录论坛访问者的访问IP及时间
    flock($fp, LOCK_EX) ;
    fwrite($fp,"记录时间:".strftime("%Y.%m.%d %H:%M:%S",time()).",IP:".$word."\n");
    flock($fp, LOCK_UN);
    fclose($fp);
}//可删

$str = explode(',',$onlineip);//滤掉代理IP
$content=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$str[0]");
$json=json_decode($content);
$add=$json->{'data'}->{'country'}.$json->{'data'}->{'area'}.$json->{'data'}->{'region'}.$json->{'data'}->{'city'}.$json->{'data'}->{'county'}.$json->{'data'}->{'isp'};

header("Content-type: image/jpeg");
$im = @imagecreatefromjpeg('img.jpg');//模板图片
$font = 'sweet.ttf';  //文字字体
$green = imagecolorallocate($im, 16, 138, 33);//颜色
$red = imagecolorallocate($im, 255, 0, 0);
$black = imagecolorallocate($im, 0, 0, 0);
$blue = imagecolorallocate($im, 48, 129, 188);
switch (strftime("%w",time()))//星期
{
case 0:
  $week=' 日曜日';
  break;
case 1:
  $week=' 月曜日';
  break;
case 2:
  $week=' 火曜日';
  break;
case 3:
  $week=' 水曜日';
  break;
case 4:
  $week=' 木曜日';
  break;
case 5:
  $week=' 金曜日';
  break;
case 6:
  $week=' 土曜日';
  break;
default:
  NULL;
}
//操作系统和UA
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
$xp = (strpos($agent, 'windows nt 5.1')) ? true : false;   
$win7 = (strpos($agent, 'windows nt 6.1')) ? true : false;  
$win8 = (strpos($agent, 'windows nt 6.2')) ? true : false;  
$win8_1 = (strpos($agent, 'windows nt 6.3')) ? true : false;  
$win10 = (strpos($agent, 'windows nt 10.0')) ? true : false;  
$vista = (strpos($agent, 'windows nt 6.0')) ? true : false;  
$pc = (strpos($agent, 'windows')) ? true : false; 
$ipad = (strpos($agent, 'ipad')) ? true : false;   
$iphone = (strpos($agent, 'iphone')) ? true : false;   
$android = (strpos($agent, 'android')) ? true : false;   
$ubuntu = (strpos($agent, 'ubuntu')) ? true : false;   
$linux = (strpos($agent, 'linux')) ? true : false;   
$mac = (strpos($agent, 'mac')) ? true : false;   
$unix = (strpos($agent, 'unix')) ? true : false;  
$symbian = (strpos($agent, 'symbian')) ? true : false;
$nokia = (strpos($agent, 'nokia')) ? true : false;   
    if($xp)$os='Windows XP'; else
    if($win7)$os='Windows 7'; else
    if($win8)$os='Windows 8'; else
    if($win8_1)$os='Windows 8.1'; else
    if($win10)$os='Windows 10'; else
    if($vista)$os='Windows Vista'; else
    if($pc)$os='Windows'; else
    if($android)$os='Android'; else
    if($ubuntu)$os='Ubuntu'; else
    if($linux)$os='Linux'; else
    if($ipad)$os='iPad'; else
    if($iphone)$os='iPhone'; else
    if($mac)$os='Mac OS X'; else
    if($unix)$os='Unix'; else
    if($symbian)$os='Nokia SymbianOS'; else
    if($nokia)$os='Nokia'; else
    $os='其它操作';
$ie = (strpos($agent, 'msie')) ? true : false;   
$firefox = (strpos($agent, 'firefox')) ? true : false;  
$maxthon = (strpos($agent, 'maxthon')) ? true : false;  
$uc = (strpos($agent, 'ucbrowser')||strpos($agent, 'ubrowser')) ? true : false;  
$yyw = (strpos($agent, '115browser')) ? true : false;  
$baidu = (strpos($agent, 'baidubrowser')||strpos($agent, 'bidubrowser')) ? true : false; 
$metasr = (strpos($agent, 'metasr')) ? true : false;  
$wang = (strpos($agent, '2345explorer')) ? true : false; 
$jia = (strpos($agent, '2345chrome')) ? true : false;   
$lb = (strpos($agent, 'lbbrowser')) ? true : false;   
$mm = (strpos($agent, 'micromessenger')) ? true : false; 
$qq = (strpos($agent, 'qq')) ? true : false;  
$miui = (strpos($agent, 'miuibrowser')) ? true : false;  
$chrome = (strpos($agent, 'chrome')) ? true : false;  
$safari = (strpos($agent, 'safari')) ? true : false;  
$opera = (strpos($agent, 'opr')||strpos($agent, 'opera')||strpos($agent, 'presto')) ? true : false;  
$trident = (strpos($agent, 'trident/7.0')) ? true : false;  
    if($ie)$ua='IE'; else
    if($firefox)$ua='蓝大人'; else
    if($maxthon)$ua='傲游'; else
    if($uc)$ua='UC'; else
    if($yyw)$ua='115'; else
    if($baidu)$ua='百度'; else
    if($metasr)$ua='搜狗'; else
    if($wang)$ua='2345王牌'; else
    if($jia)$ua='2345加速'; else
    if($lb)$ua='猎豹安全'; else
    if($mm)$ua='微信'; else
    if($qq)$ua='QQ'; else
    if($miui)$ua='Miui'; else
    if($opera)$ua='欧朋'; else
    if($chrome )$ua='Chrome'; else
    if($safari)$ua='Apple Safari'; else
    if($trident)$ua='IE11'; else
    $ua='其它';
//写图文字和图片
$text1 = '欢迎来自'.$add.'的朋友';
$text2 = '今天是公元'.strftime("%Y年%m月%d日",time()).$week; 
$text3 = '您的IP是'.$ip;
$text4 = '您使用'.$os.'系统和'.$ua.'浏览器';
$text5 = '目前我在H萌已经被视奸了';
$text6 = '看你一副RBQ的样子= ̄ω ̄=';
$text7 = 'thkira.com';
$respects='☆こんにちは~☆';//日常问候
$bili = imagecreatefrompng('bili.png');
$sizel = getimagesize('bili.png');
$hmoe = imagecreatefrompng('hmoe.png');
$sizeh = getimagesize('hmoe.png');
$miku = imagecreatefrompng('miku.png');
$sizem = getimagesize('miku.png');
$srcw=imagesx($im);
//int im, int size, int angle, int x, int y, int col, string fontfile, string text
//resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h
imagettftext($im, 14, 0, 15, 70, $black, $font, $text1);
imagettftext($im, 14, 0, 15, 90, $black, $font, $text2);
imagettftext($im, 14, 0, 15, 110, $black, $font, $text3);
imagettftext($im, 14, 0, 15, 130, $black, $font, $text4);
imagettftext($im, 14, 0, 15, 150, $black, $font, $text5);
imagettftext($im, 14, 0, 250, 150, $red, $font, $num);
imagettftext($im, 14, 0, 15, 170, $green, $font, $text6);
imagettftext($im, 14, 0, 410, 200, $black, $font, $text7);
if(strftime("%m",time())==06&&strftime("%d",time())==26){$respects='哔哩哔哩生日快乐';imagecopy($im,$bili,400,96,0,0,$sizel[0],$sizel[1]);}//哔哩哔哩生日
if(strftime("%m",time())==06&&strftime("%d",time())==15){$respects='☆H萌生日快乐☆';imagecopy($im,$hmoe,400,96,0,0,$sizeh[0],$sizeh[1]);}//H萌生日
if(strftime("%m",time())==08&&strftime("%d",time())==31){$respects='☆MIKU酱生日快乐';imagecopy($im,$miku,400,96,0,0,$sizem[0],$sizem[1]);}//miku生日
imagettftext($im, 25, 30, 290, 200, $blue, $font, $respects);
imagepng($im);
imagedestroy($im);
?>

OK,这样就可以使用像这样的的动态签名了,为了减轻负担,我的博客并没有采用。

bbsimgbilihmoemiku

日期不对,不要介意,只是测试而已

在论坛签名处图片替换从该PHP链接就行了,OK到此结束。

技术不好,写得不到位的地方请见谅_(:з」∠)_

本文由 @会飞的鱼 于 2017-10-12 发布在 会飞的鱼Blog,如无特别说明,本博文章均为原创,转载请保留出处。

网友评论当前共有1条评论

  • 2018-02-21 11:06

    图片是处理过的吗还有那个字体文件。能不能发一下

会飞的鱼 在线咨询

在线时间:9:00-22:00
周六、周日:14:00-22:00