php生成艺术签名 上
php生成艺术签名
上一周,boss要求做一个输入名字生成艺术签名的网站来吸引微信用户关注。于是到网上搜索了一下。看到别人的网站上面有这功能。于是就开启chrom的调试功能点击network分析网站的请求以及返回的内容。经过一番分析过后,使用curl来模拟浏览器访问网站的后台程序并获取返回的资源。
这里用到同事给我的一个封装好的curl接口,省去了不少麻烦。
/*** curl模拟http请求* @param array $params 参数配置* @return mixed 返回结果*/function curlHttp($params = array()){error_reporting(0);set_time_limit(0);if (!$params || !$params['url']) {return false;}$ch = curl_init();$options = array(CURLOPT_URL => $params['url'],CURLOPT_RETURNTRANSFER => $params['return_transer'] ? $params['return_transer'] : 1,CURLOPT_TIMEOUT => $params['timeout'] ? $params['timeout'] : 100,CURLOPT_CONNECTTIMEOUT => 10,CURLOPT_HEADER => $params['show_header'] ? true : false,CURLOPT_HTTPHEADER => array('Expect: '));if ($params['agent']) {$options[CURLOPT_USERAGENT ] = $params['agent'];}if ($params['referer']) {$options[CURLOPT_REFERER] = $params['referer'];}if ($params['cookie']) {$options[CURLOPT_COOKIE ] = $params['cookie'];}if ($params['header']) {$options[CURLOPT_HTTPHEADER] = $params['header'];}if ($params['cookiefile']) {if (!file_exists($params['cookiefile'])) {file_put_contents($params['cookiefile'], '');}$cookieFile = realpath($params['cookiefile']);$options[CURLOPT_COOKIEFILE] = $cookieFile;$options[CURLOPT_COOKIEJAR] = $cookieFile;}if ($params['post']) {$options[CURLOPT_POST] = 1;}if ($params['postdata']) {$options[CURLOPT_POST] = 1;if ($params['http_build_query']) {$params['postdata'] = http_build_query($params['postdata']);}$options[CURLOPT_POSTFIELDS] = $params['postdata'];}if ($params['ssl']) {$options[CURLOPT_SSL_VERIFYPEER] = 0;$options[CURLOPT_SSLVERSION] = 1;$options[CURLOPT_SSL_VERIFYHOST] = 1;}if ($params['ipv4']) {$options[CURLOPT_HTTPHEADER] = array('Expect: ');$options[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;}curl_setopt_array($ch, $options);$response = curl_exec($ch);$errno = curl_errno($ch);if ($errno != 0) {if ($params['sync']) {$res[] = false;$res[] = $response;$errInfo = curl_getinfo($ch);$errInfo['errorno'] = $errno;$res[] = $errInfo;} else {$res = false;}} else {if ($params['sync']) {$res[] = true;$res[] = $response;} else {$res = $response;}}curl_close($ch);return $res;}
传进去的参数是一个数组,数组里面需要定义的元素有
$params = array('url' => 'http://www.example.com','ipv4' => true,'post' => true,'referer' => 'http://www.example.com',//'cookie' => 'Hm_lvt_1a6016c8e736ecef523fbe2539419b5a=1468570717;Hm_lpvt_1a6016c8e736ecef523fbe2539419b5a=1468570772','postdata' => array('id'=>$content,'id1607'=>'pihun','id1606'=>'jiqie','id1608'=>'jiqie_com','id1'=>'901','id2'=>'15','id3'=>'#000000','id4'=>'','id5'=>'','id6'=>'',),'agent' => 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36');
其中最重要的是url referer 以及postdata。postdata就是模拟post传输的数据。
通过curl获取返回的资源是整个网站的信息,而我只需要用到那张图片就行了。所以就要从整个网站的字符串中截取出图片的url了。这时候该用到php字符串函数了,这里有两个关于php字符串函数的网页,分别是w3school,php官网。
要用到的函数有:
strstr(string,search,is_befoerSearch)
这个函数是用来查找search在string中出现的位置并返回该位置后面的字符串。当is_befoerSearch为true时则返回该位置前的字符串。
strpos(string,find,start)
该函数用来返回find在string第一次出现的位置。start为要开始的位置。默认为0。
strsub_replace(string,replace,start,length)
该函数用来将string从start开始到length位置替换为replace字符串。
//$res返回的是网页的源码,其中要获取的签名图片地址是<img src="../image/4232.jpg" />是使用相对路径来指定url的。$res = $this->curlHttp($params);//这里是返回的网页源码字符串$domain = strstr($res, '..');//获取$res中..后面的字符串$domain = strstr($domain, '"',true);//获取$domain中"后面的字符串$start = strpos($domain,'..');//获取..开始的位置$domain = substr_replace($domain,"http://www.example.com",$start,2);//将..替换为域名
现在已经获取了图片的域名了。那么接下来要做的事情就是把二维码已经需要添加的文字加到图片上去。初步想法是将图片设为div的背景,然后把二维码以及文字加上去。然后使用canvas截图生成一张图片。这样子用户就可以把图片保存下来了。
截图功能需要用到第三方的一个js库。详细请参看这里
使用这个js库就可以轻松的把div截下来生成图片了。由于生成的图片是以base64格式保存的。而微信安卓客户端保存图片的时候提示保存失败!于是我又试了试安卓端的浏览器,结果可以。。。做的生成签名的这个活动主要是在推给微信用户使用的。这时候只能在后台合成图片后再输出到网页了。
在后台合成图片用到的是GD库。既然都直接后台合成了为什么不自己直接在后台合成字体呢。于是就在网上找了些比较艺术的字体。
累了。。。后台合成部分明天再写
php生成艺术签名 上相关推荐
- 艺术签名生成软件有哪些?如何生成艺术签名?
在日常的生活中,需要签名的情况不在少数,比如签收快递.签订合同等需要确认信息的场景.我有一个朋友,他的字其实是比较楷体的,但是他总是抱怨自己的字没有别人那么有艺术感.我告诉他,其实现在有一些软件, ...
- php生成艺术签名 下
现在已经有了所需的字体了.那么接下来就是把艺术字体写到背景图片上再加上二维码了. resource imagecreatefromjpeg ( string $filename ) 从本地文件或url ...
- 生成连笔字图片php,设计一个属于自己的艺术签名,名字连笔签名设计软件
一个不错的签名将可以衬托出一个人的身份,不然字如其名也不是白叫的哈哈(小编也不知道这是什么梗).现在很多名人都会拥有属于自己的个性签名,毕竟名人嘛,名字签的不好看也说得不过去.那么今天小编就为你介绍一 ...
- 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
前言 本文给大家分享的是如何通过利用Python制作艺术签名生成器,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: requests模块 PIL模块 PyQt5模块 环境搭建 安 ...
- 设计艺术签名的软件有哪些?不妨试试这几款应用
大家有没有发现明星在签名的时候都是使用一些艺术字体,特别的独一无二,知道这是为啥吗?其实就是为了防止被别人盗用,拿去售卖.那么在生活中你们有没有想过给自己也设计一个艺术签名?其实,现在市面上各种各样的 ...
- 「以代码作画」从数据角度剖析Art Blocks生成艺术
作者:Mia Bao, co-founder of thepass.to, chief partner of WHALE members 数据:Jin, data analyst of thepass ...
- 腾讯云COS云对象存储,分布式解决签名上传
昨天写了阿里云的OSS对象存储签名上传,今天把腾讯云的也总结一下,非常简单,开通步骤和开通子用户并授权就不再多说,类比上一篇博客: https://blog.csdn.net/m0_57249797/ ...
- Python3,10行代码,制作艺术签名,从此走上人生巅峰。
制作艺术签名 1.引言 2.代码实战 2.1 代码示例 3.总结 1.引言 小鱼:小屌丝,你在画啥呢? 小屌丝:- 我这在练习签名呢. 小鱼:这- 艺术签? 小屌丝:喔,鱼哥,你这真实博才多艺,这都知 ...
- 这篇文章告诉你艺术签名自动生成器有哪些
当今社会无论是大人还是小孩:无论是在工作中还是学习上,签名都是我们经常要做的事情,例如:新课本写上名字.孩子成绩单签名.合同签订等等.但是并不是所有人签出来的名字都很好看,很多人跟我一样都是先借助一些 ...
最新文章
- nagios学习笔记(二)
- javaScript第二天(1)
- R语言中级--自定义方程
- Struts2的工作原理及工作流程
- 创科视觉软件说明书_【纳博特斯克 | GGII】20192023年中国机器视觉行业调研
- 网络流专题(完结撒花)
- ucc编译器(入门)
- VC编译项目时缺少atlrx.h的解决办法
- 如何使用maven打包
- 15个最佳iOS游戏模板
- 再说市场资金流向问题
- 法向量与切向量的转化
- 短期不看好 KotLin 原因
- HTML5定稿了 为什么原生App世界将被颠覆
- 域控服务器的dns配置,如何配置额外域控制器上的DNS?
- 复数神经网络_如果神经网络状态为复数会发生什么?
- Python从入门到PY交易,基础语法,散记(二)
- java 生成印章源码_java代码生成指定的公章和私章,并且解决服务器不能回显文字的问题...
- 事情处理方法之一:时间错开
- 英语语法word检查器Error: Grammarly add-in has failed to load
热门文章
- XYOJ1249: 均分纸牌(playcard)
- VMware虚拟机三种网络模式详解--Bridged(桥接模式)
- 《美团机器学习实践》学习笔记:POI实体链接与评论挖掘
- hipaa_AIX 6.1安全功能:符合HIPAA的映射
- Mendix Studio Pro 9.6 发布:带来全新的Mendix体验
- java字符串转long类型,附小技巧
- tk-mybatis 的简单使用
- 利用BAPI(BAPI_GOODSMVT_CREATE)投料消耗(261)销售订单E库存
- 在Linux使用脚本实现TC控制少数人的下载带宽,如果是网管,正好用得着。
- Bootstrap table设置th,td内容水平、垂直居中