热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

商品分享图片分享

(1)首先来效果图(2)二话不说,上代码(这个是在接口中实现的,使用的是phala

(1)首先来效果图

/*** 从图片文件创建Image资源* @param $file 图片文件,支持url* @return bool|resource 成功返回图片image资源,失败返回false*/public function createImageFromFile($file){if (preg_match('/http(s)?:\/\//', $file)) {$fileSuffix = $this->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 $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 = DI()->config->get('common.share_font');$font_file_bold = DI()->config->get('common.share_font_blod');//设定字体的颜色$font_color_1 = ImageColorAllocate($im, 153, 153, 153);$font_color_2 = ImageColorAllocate($im, 51, 51, 51);$font_color_3 = ImageColorAllocate($im, 129, 129, 129);$font_color_red = ImageColorAllocate($im, 237, 110, 29);$fang_bg_color = ImageColorAllocate($im, 254, 216, 217);//Logo$logo = DI()->config->get('common.share_logo');list($l_w, $l_h) = getimagesize($logo);$logoImg = @imagecreatefrompng($logo);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 = $this->createImageFromFile($gData['pic']);imagecopyresized($im, $goodImg, 0, 185, 0, 0, 618, 618, $g_w, $g_h);//二维码list($code_w, $code_h) = getimagesize($codeName);$codeImg = $this->createImageFromFile($codeName);imagecopyresized($im, $codeImg, 440, 820, 0, 0, 160, 160, $code_w, $code_h);//商品描述$theTitle = $this->cn_row_substr($gData['title'], 2, 20);imagettftext($im, 14, 0, 48, 845, $font_color_2, $font_file, html_entity_decode($theTitle[1]));imagettftext($im, 14, 0, 48, 875, $font_color_2, $font_file, $theTitle[2]);imagettftext($im, 16, 0, 48, 935, $font_color_2, $font_file, "价格:");imagettftext($im, 18, 0, 100, 935, $font_color_red, $font_file_bold, "¥" . $gData["price"]);//桃子抵扣数量if ($gData['original_price']) {imagettftext($im, 14, 0, 48, 970, $font_color_3, $font_file, "(桃子可抵扣¥" . $gData["original_price"] . ")");}//输出图片if ($fileName) {imagepng($im, $fileName);} else {Header("Content-Type: image/png");imagepng($im);}//释放空间imagedestroy($im);imagedestroy($goodImg);imagedestroy($codeImg);}/*** 获取网络图片类型* @param $url 网络图片url,支持不带后缀名url* @return bool*/public 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;}}

 

 

 


推荐阅读
  • [论文笔记] Crowdsourcing Translation: Professional Quality from Non-Professionals (ACL, 2011)
    Time:4hoursTimespan:Apr15–May3,2012OmarZaidan,ChrisCallison-Burch:CrowdsourcingTra ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 苹果新专利或将引领无边框手机时代
    苹果公司最近公布了一项新的专利技术,该技术能够在设备屏幕中嵌入光线传感器,这标志着苹果在实现无边框手机设计上迈出了重要一步。这一创新将极大提升手机的屏占比,并可能为未来的iPhone带来革命性的变化。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • RT,个人博客图片管理(方便管理,大家 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
author-avatar
VEACEN晨k
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有