我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP怎么实现图片合并

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP怎么实现图片合并

本篇内容介绍了“PHP怎么实现图片合并”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

准备工作

需要海报的底图

小程序码的图片 

代码部分结合YII2但不影响使用

完整过程

生成小程序码图片

缩放小程序码的图片大小  (如果尺寸符合海报大小可省略) 280-1280px

将缩放后的小程序图片合成到背景图片

合成文字信息

生成小程序码图片 (我使用的场景是无限制小程序码code地址 三种自行选择)

//微信小程序 小程序码    public static function getWeChatSmallProgramCode($scene)    {        $AccessToken = self::getAccessToken();        $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $AccessToken;        $postData = [            'scene' => $scene,            'page' => 'pages/index/index',            'width'=>930        ];        $postData = json_encode($postData);        $contentData = self::sendPost($url, $postData);        return $contentData; //如果图片大小符合这开启base64位图片地址也可以完成图片的合并合文字的合并//        return self::base64UrlCode($contentData, 'image/png');    }    protected static function sendPost($url, $post_data)    {        $options = array(            'http' => array(                'method' => 'POST',                'header' => 'Content-type:application/json',                //header 需要设置为 JSON                'content' => $post_data,                'timeout' => 60                //超时时间            )        );        $context = stream_context_create($options);        return file_get_contents($url, false, $context);    }    //二进制转图片image/png    public static function base64UrlCode($contents, $mime)    {        $base64 = base64_encode($contents);        return ('data:' . $mime . ';base64,' . $base64);    }

缩放小程序码的图片大小 

    public static function picZoom($img_path,$new_width,$new_height,$new_img_path)    {        //获取尺寸        list($width, $height, $img_type, $attr) = getimagesize($img_path);        $imageinfo = [            'width' => $width,            'height' => $height,            'type' => image_type_to_extension($img_type, false),            'attr' => $attr        ];        $fun = "imagecreatefrom" . $imageinfo['type'];        $image = $fun($img_path);        //创建新的幕布        $image_thump = imagecreatetruecolor($new_width, $new_height);        //复制源文件        imagecopyresampled($image_thump, $image, 0, 0, 0, 0, $new_width, $new_height, $imageinfo['width'], $imageinfo['height']);        imagedestroy($image);        $image = $image_thump;        $func = 'image' . $imageinfo['type'];        $func($image, $new_img_path);    }

将缩放后的小程序图片合成到背景图片

    public static function picMerge($dstPath, $class="lazy" data-srcPath, $dstX = 0, $dstY = 0, $class="lazy" data-srcX = 0, $class="lazy" data-srcY = 0, $pct = 100, $filename = '')    {        //创建图片的实例        $dst = imagecreatefromstring(file_get_contents($dstPath));        $class="lazy" data-src = imagecreatefromstring(file_get_contents($class="lazy" data-srcPath));        //获取水印图片的宽高        list($class="lazy" data-src_w, $class="lazy" data-src_h) = getimagesize($class="lazy" data-srcPath);        //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果//        imagecopymerge($dst, $class="lazy" data-src, 80, 125, 0, 0, $class="lazy" data-src_w, $class="lazy" data-src_h, 100);        imagecopymerge($dst, $class="lazy" data-src, $dstX, $dstY, $class="lazy" data-srcX, $class="lazy" data-srcY, $class="lazy" data-src_w, $class="lazy" data-src_h, $pct);        //如果水印图片本身带透明色,则使用imagecopy方法        //imagecopy($dst, $class="lazy" data-src, 10, 10, 0, 0, $class="lazy" data-src_w, $class="lazy" data-src_h);        //输出图片        list($dst_w, $dst_h, $dst_type) = getimagesize($dstPath);        switch ($dst_type) {            case 1://GIF                if (!$filename) {                    header('Content-Type: image/gif');                    imagegif($dst);                } else {                    imagegif($dst, $filename);                }                break;            case 2://JPG                if (!$filename) {                    header('Content-Type: image/jpeg');                    imagejpeg($dst);                } else {                    imagejpeg($dst, $filename);                }                break;            case 3://PNG                if (!$filename) {                    header('Content-Type: image/png');                    imagepng($dst);                } else {                    imagepng($dst, $filename);                }                break;            default:                break;        }        imagedestroy($dst);        imagedestroy($class="lazy" data-src);    }

合成文字信息

    public static function addFontToPic($dstPath, $fontPath, $fontSize, $text, $dstY, $filename = '')    {        ob_end_clean();        //创建图片的实例        $dst = imagecreatefromstring(file_get_contents($dstPath));        //打上文字        $fontColor = imagecolorallocate($dst, 255, 255, 255);//字体颜色        $width = imagesx($dst);        $height = imagesy($dst);        $fontBox = imagettfbbox($fontSize, 0, $fontPath, $text);//文字水平居中实质        imagettftext($dst, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), $dstY, $fontColor, $fontPath, $text);        //输出图片        list($dst_w, $dst_h, $dst_type) = getimagesize($dstPath);        switch ($dst_type) {            case 1://GIF                if (!$filename) {                    header('Content-Type: image/gif');                    imagegif($dst);                } else {                    imagegif($dst, $filename);                }                break;            case 2://JPG                if (!$filename) {                    header('Content-Type: image/jpeg');                    imagejpeg($dst);                } else {                    imagejpeg($dst, $filename);                }                break;            case 3://PNG                if (!$filename) {                    header('Content-Type: image/png');                    imagepng($dst);                } else {                    imagepng($dst, $filename);                }                break;            default:                break;        }        imagedestroy($dst);        return $filename;    }

外部的调用

    public static function generateWeChatAppletImage($shop_id, $shop_name)    {        //1 生成小程序码        //2 合成小程序码到背景图片        $sceneStr = '?shop_id=' . $shop_id;        $weChatAppImgBaseData = WxTools::getWeChatSmallProgramCode($sceneStr);        $weChatAppImgPath = './weChatAppImg/shop_code_' . $shop_id . '.jpg';        file_put_contents($weChatAppImgPath, $weChatAppImgBaseData);        //合并到背景图片中        $beiJinImgPath = './weChatAppImg/weChatBJ.jpg';        $mergeImgFile = './weChatAppImg/shop_mini_program' . $shop_id . '.jpg';        GenerateCodeImg::picMerge($beiJinImgPath, $weChatAppImgPath, 408, 714, $class="lazy" data-srcX = 0, $class="lazy" data-srcY = 0, $pct = 100, $mergeImgFile);        //3 合成文字        $fontPath = './plus/fonts/SourceHanSansCN-Bold.ttf';        $fontSize = 40;        $dstY = 640;        GenerateCodeImg::addFontToPic($mergeImgFile, $fontPath, $fontSize, $shop_name, $dstY, $mergeImgFile);        $weChatCodeImgUrL = \Yii::$app->request->hostInfo . '/weChatAppImg/shop_code_' . $shop_id . '.jpg';        $weChatAppImgUrl = \Yii::$app->request->hostInfo . '/weChatAppImg/shop_mini_program' . $shop_id . '.jpg';        return [            'weChatCodeImgUrL' => $weChatCodeImgUrL,            'weChatAppImgUrl' => $weChatAppImgUrl,        ];    }

常见的问题

1文字合并的时候出现乱码?

第一检测一下字体是否是正常tff字体  如果不知道去C://windows/Fonts 随便找一个 微软雅黑都行

英文阿拉布数字正常 中文乱码

$text = mb_convert_encoding("呵呵呵","UTF-8","GBK");

$text = mb_convert_encoding("呵呵呵","html-entities","UTF-8"); 

设置看看

“PHP怎么实现图片合并”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP怎么实现图片合并

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP怎么实现图片合并

本篇内容介绍了“PHP怎么实现图片合并”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备工作1、需要海报的底图2、小程序码的图片 代码部分结
2023-07-05

php怎么上传图片并显示图片

在PHP中,可以使用`$_FILES`数组来处理上传的文件。以下是一个简单的示例代码,演示了如何上传图片并显示图片:```if ($_SERVER['REQUEST_METHOD'] === 'POST') {// 检查文件是否上传成功if
2023-10-11

C#实现合并多张图片为GIF动态图

这篇文章主要为大家详细介绍了C#如何将把一张又一张的图片去拼合成一张GIF动态图片,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2022-12-15

c++怎么结合opencv实现读取多张图片并显示

这篇文章主要介绍“c++怎么结合opencv实现读取多张图片并显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c++怎么结合opencv实现读取多张图片并显示”文章能帮助大家解决问题。方法一主要函
2023-07-04

php合成图片出现乱码怎么办

PHP合成图片乱码解决原因:字符编码不匹配字体损坏或丢失GD库不支持字体解决方案:匹配字符编码检查字体文件使用TrueType字体禁用fontconfig调整文本大小和颜色使用最新GD库安装imagick扩展
php合成图片出现乱码怎么办
2024-04-26

php合成图片出现乱码怎么办

php合成图片出现乱码的解决办法:1、打开相应的PHP生成图片的代码;2、通过添加“ob_end_clean()”在header函数前清空缓存数据即可。
2015-08-14

怎么在Cacti中合并两幅图片

本篇内容主要讲解“怎么在Cacti中合并两幅图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Cacti中合并两幅图片”吧!Cacti是一个很棒的开源网络监视系统,它广泛使用于图形化地展示
2023-06-16

php合成图片出现乱码怎么解决

本篇内容介绍了“php合成图片出现乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php合成图片出现乱码的解决办法:1、打开相应的
2023-06-22

php怎么实现图片验证码

php实现图片验证码的方法:1、加载GD扩展;2、创建画布并在画布上增加内容;3、通过imagepng保存输出;4、释放资源;5、生成随机验证码数据即可。
2017-09-20

java怎么实现图片上传并显示

在Java中实现图片上传并显示的一种常见的方法是使用Servlet和JSP。下面是一个简单的示例代码:创建一个Servlet类来处理图片上传请求:import java.io.File;import java.io.IOException
2023-10-24

怎么用php实现图片上传

这篇文章主要介绍了怎么用php实现图片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用php实现图片上传文章都会有所收获,下面我们一起来看看吧。一、创建html页面首先,我们要创建一个html页面,这个
2023-07-05

PHP怎么上传图片并实现特定的命名规则

今天小编给大家分享一下PHP怎么上传图片并实现特定的命名规则的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本的图片上传
2023-07-05

php怎么读取图片并输出

php中读取和输出图像的步骤:使用 imagecreatefrom() 函数根据图像类型读取图像。设置 http 标头以正确显示图像。使用 imagepng() 函数将图像输出到浏览器。PHP 读取并输出图片在 PHP 中,可以使用以下步
php怎么读取图片并输出
2024-05-14

Python如何实现合并多张图片成视频

本篇内容介绍了“Python如何实现合并多张图片成视频”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并多张图片到视频的方法说明除了使用 O
2023-07-05

怎么在php中实现数组合并

这期内容当中小编将会给大家带来有关怎么在php中实现数组合并,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、使用加号“+”运算符:直接将两个数组的值合并成为一个数组;$a = [1,2,3,a=>a];
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录