小程序导航 wq.xmaht.top

假设代码中用到的资源文件夹在当前code_png目录下:/*** 分享图片生成* @param $gData  商品数据,array* @param $codeName 二维码图片* @param $fileName string 保存文件名,默认空则直接输入图片*/
function createSharePng($gData,$codeName,$fileName = ''){//创建画布$im = imagecreatetruecolor(618, 1000);//填充画布背景色$color = imagecolorallocate($im, 255, 255, 255);imagefill($im, 0, 0, $color);//字体文件$font_file = "code_png/msyh.ttf";$font_file_bold = "code_png/msyh_bold.ttf";//设定字体的颜色$font_color_1 = ImageColorAllocate ($im, 140, 140, 140);$font_color_2 = ImageColorAllocate ($im, 28, 28, 28);$font_color_3 = ImageColorAllocate ($im, 129, 129, 129);$font_color_red = ImageColorAllocate ($im, 217, 45, 32);$fang_bg_color = ImageColorAllocate ($im, 254, 216, 217);//Logolist($l_w,$l_h) = getimagesize('code_png/logo100_100.png');$logoImg = @imagecreatefrompng('code_png/logo100_100.png');imagecopyresized($im, $logoImg, 274, 28, 0, 0, 70, 70, $l_w, $l_h);//温馨提示imagettftext($im, 14,0, 100, 130, $font_color_1 ,$font_file, '温馨提示:喜欢长按图片识别二维码即可前往购买');//商品图片list($g_w,$g_h) = getimagesize($gData['pic']);$goodImg = createImageFromFile($gData['pic']);imagecopyresized($im, $goodImg, 0, 185, 0, 0, 618, 618, $g_w, $g_h);//二维码list($code_w,$code_h) = getimagesize($codeName);$codeImg = createImageFromFile($codeName);imagecopyresized($im, $codeImg, 440, 820, 0, 0, 170, 170, $code_w, $code_h);//商品描述$theTitle = cn_row_substr($gData['title'],2,19);imagettftext($im, 14,0, 8, 845, $font_color_2 ,$font_file, $theTitle[1]);imagettftext($im, 14,0, 8, 875, $font_color_2 ,$font_file, $theTitle[2]);imagettftext($im, 14,0, 8, 935, $font_color_2 ,$font_file, "券后价¥");imagettftext($im, 28,0, 80, 935, $font_color_red ,$font_file_bold, $gData["price"]);imagettftext($im, 14,0, 8,970, $font_color_3 ,$font_file, "现价¥".$gData["original_price"]);//优惠券if($gData['coupon_price']){imagerectangle ($im, 125 , 950 , 160 , 975 , $font_color_3);imagefilledrectangle ($im, 126 , 951 , 159 , 974 , $fang_bg_color);imagettftext($im, 14,0, 135,970, $font_color_3 ,$font_file, "券");$coupon_price = strval($gData['coupon_price']);imagerectangle ($im, 160 , 950 , 198 + (strlen($coupon_price)* 10), 975 , $font_color_3);imagettftext($im, 14,0, 170,970, $font_color_3 ,$font_file, $coupon_price."元");}//输出图片if($fileName){imagepng ($im,$fileName);}else{Header("Content-Type: image/png");imagepng ($im);}//释放空间imagedestroy($im);imagedestroy($goodImg);imagedestroy($codeImg);
}/*** 从图片文件创建Image资源* @param $file 图片文件,支持url* @return bool|resource    成功返回图片image资源,失败返回false*/
function createImageFromFile($file){if(preg_match('/http(s)?:\/\//',$file)){$fileSuffix = getNetworkImgType($file);}else{$fileSuffix = pathinfo($file, PATHINFO_EXTENSION);}if(!$fileSuffix) return false;switch ($fileSuffix){case 'jpeg':$theImage = @imagecreatefromjpeg($file);break;case 'jpg':$theImage = @imagecreatefromjpeg($file);break;case 'png':$theImage = @imagecreatefrompng($file);break;case 'gif':$theImage = @imagecreatefromgif($file);break;default:$theImage = @imagecreatefromstring(file_get_contents($file));break;}return $theImage;
}/*** 获取网络图片类型* @param $url  网络图片url,支持不带后缀名url* @return bool*/
function getNetworkImgType($url){$ch = curl_init(); //初始化curlcurl_setopt($ch, CURLOPT_URL, $url); //设置需要获取的URLcurl_setopt($ch, CURLOPT_NOBODY, 1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);//设置超时curl_setopt($ch, CURLOPT_TIMEOUT, 3);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //支持httpscurl_exec($ch);//执行curl会话$http_code = curl_getinfo($ch);//获取curl连接资源句柄信息curl_close($ch);//关闭资源连接if ($http_code['http_code'] == 200) {$theImgType = explode('/',$http_code['content_type']);if($theImgType[0] == 'image'){return $theImgType[1];}else{return false;}}else{return false;}
}/*** 分行连续截取字符串* @param $str  需要截取的字符串,UTF-8* @param int $row  截取的行数* @param int $number   每行截取的字数,中文长度* @param bool $suffix  最后行是否添加‘...’后缀* @return array    返回数组共$row个元素,下标1到$row*/
function cn_row_substr($str,$row = 1,$number = 10,$suffix = true){$result = array();for ($r=1;$r<=$row;$r++){$result[$r] = '';}$str = trim($str);if(!$str) return $result;$theStrlen = strlen($str);//每行实际字节长度$oneRowNum = $number * 3;for($r=1;$r<=$row;$r++){if($r == $row and $theStrlen > $r * $oneRowNum and $suffix){$result[$r] = mg_cn_substr($str,$oneRowNum-6,($r-1)* $oneRowNum).'...';}else{$result[$r] = mg_cn_substr($str,$oneRowNum,($r-1)* $oneRowNum);}if($theStrlen < $r * $oneRowNum) break;}return $result;
}/*** 按字节截取utf-8字符串* 识别汉字全角符号,全角中文3个字节,半角英文1个字节* @param $str  需要切取的字符串* @param $len  截取长度[字节]* @param int $start    截取开始位置,默认0* @return string*/
function mg_cn_substr($str,$len,$start = 0){$q_str = '';$q_strlen = ($start + $len)>strlen($str) ? strlen($str) : ($start + $len);//如果start不为起始位置,若起始位置为乱码就按照UTF-8编码获取新startif($start and json_encode(substr($str,$start,1)) === false){for($a=0;$a<3;$a++){$new_start = $start + $a;$m_str = substr($str,$new_start,3);if(json_encode($m_str) !== false) {$start = $new_start;break;}}}//切取内容for($i=$start;$i<$q_strlen;$i++){//ord()函数取得substr()的第一个字符的ASCII码,如果大于0xa0的话则是中文字符if(ord(substr($str,$i,1))>0xa0){$q_str .= substr($str,$i,3);$i+=2;}else{$q_str .= substr($str,$i,1);}}return $q_str;
}//使用方法-------------------------------------------------
//数据格式,如没有优惠券coupon_price值为0。
$gData = ['pic' => 'code_png/nv_img.jpg','title' =>'chic韩版工装羽绒棉服女冬中长款2017新款棉袄大毛领收腰棉衣外套','price' => 19.8,'original_price' => 119.8,'coupon_price' => 100
];
//直接输出
createSharePng($gData,'code_png/php_code.jpg');
//输出到图片
createSharePng($gData,'code_png/php_code.jpg','share.png');

转载于:https://www.cnblogs.com/mverting/p/9317984.html

使用PHP生成分享图片相关推荐

  1. 小程序---canvas画图,生成分享图片,画图文字换行

    小程序目前只支持转发,不支持分享朋友圈,为了能实现分享,很多线上小程序通过生成分享图片,保存到相册来给用户增加分享的可能. 具体思路及简要代码如下: 一:canvas画图drawCanvas:func ...

  2. android后台通过View生成分享图片

    原文地址:http://www.jianshu.com/p/33e30da0385c 最近工作特忙,好久没静下心总结一些开发中的心得,后面会陆续写一些文章总结一下最近遇到的问题和一些收获吧- 闲话少说 ...

  3. 【愚公系列】2022年08月 微信小程序-view生成分享图片

    文章目录 前言 一.view生成分享图片 1.组件的封装 2.组件的使用 3.效果 4.第三方工具的使用 前言 微信小程序并不支持view直接转绘到画布上,想要实现海报功能必须通过以下4个步骤: 通过 ...

  4. android 生成推广图片保存_android后台通过View生成分享图片

    最近工作特忙,好久没静下心总结一些开发中的心得,后面会陆续写一些文章总结一下最近遇到的问题和一些收获吧- 闲话少说,今天想跟大家分享的是,在android中,如何后台将一个view绘制成图片,并简单梳 ...

  5. 使用pillow生成分享图片

    重复性的工作一定要交给计算机去做! 有时候要为公司做一张宣传用的分享图片,很简单交给设计通过ps.AI做好就行了,但是如果一个网站要为每个用户生成一张专属的分享图片,如果让设计师一张一张的去做,哪设计 ...

  6. uniapp 生成分享图片(图片+二维码),并保存到本地相册 功能实现

    生成分享图片 使用场景 在使用电商app时,通常有个分享给好友的功能,如果想要做分销类型,发展下线,也就是你邀请的好友是你的下级的话,就需要分享时将个人信息附带进去,因此会涉及到生成分享图片. 界面 ...

  7. uni-app生成分享图片( 使用 Painter 生成分享海报)

    Painter 支持文本.图片.矩形.qrcode 类型的 view 绘制. 如何使用 1.引入代码.注意:存放目录   uni-app根据不同平台插件存放目录不同. git clone https: ...

  8. 实现仿简书选取内容生成分享图片效果

    前几天脑子里忽然闪过简书的图片分享效果,感觉很简洁也很漂亮,想着能不能用自己方式实现一下呢,于是今天就有了这篇文章.好了,先看下效果图吧: 项目地址: https://github.com/zhang ...

  9. 仿商城商品生成分享海报图片和识别图中二维码并跳转商品详情页

    购物商城里面的商品分享给朋友的时候会生成一张海报图片,图片上附带这二维码图片,朋友拿到这张图片扫描上面的二维码就可以进入商品详情页查看此商品了.今天来做一下这种功能,先生成商品海报图片,然后长按这张图 ...

最新文章

  1. 【Java面试题】54 去掉一个Vector集合中重复的元素
  2. python的format输出报文_python构造IP报文实例
  3. 手动部署 Ceph Mimic 三节点
  4. Visio 方向工程连接 Oracle 10G
  5. Blazor 应用如何使用 Azure Active Directory 认证登录
  6. mysql列调换位置_mysql互换表中两列数据方法
  7. 二叉树----数据结构:二叉树的三种遍历及习题
  8. eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心
  9. 实例构造函数与静态构造函数执行顺序
  10. 用于高速网络的实时且可靠的基于异常的入侵检测
  11. 【总结】线性代数的本质 - 3
  12. Linux中wget、yum与apt-get用法及区别
  13. 十六、Linux驱动之块设备驱动
  14. 【状语从句练习题】综合训练
  15. org.json.JSONException: Value [{“id“:10,“userId“:6,“adminId“:5,“content“:“7777“,“state“:-1,“image1“:
  16. Nginx Error: socket() [::]:80 failed (97: Address family not supported by protocol)
  17. 【JZOJ5353】村通网
  18. tps,rps,qps,hps的区别
  19. MAC: PBOC-MAC DES算法
  20. 【王老师说运维】:高级运维开发工程师在线评测

热门文章

  1. (三十三)设计模式之混合模式
  2. 实用比较,帮你决策到底选择Vue还是Angular4、5
  3. CentOS 6.9/7通过yum安装指定版本的MySQL
  4. JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】...
  5. SQL Server 2005 的nvarchar(max),varchar(max)来救火
  6. JavaScript Select和Option列表元素上下左右移动
  7. Python延迟打印字符
  8. textView 加入链接
  9. 【知识小课堂】mongodb 之 特殊集合及索引
  10. 发生TM锁争用的情况