广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP怎么实现图片合并
  • 155
分享到

PHP怎么实现图片合并

2023-07-05 17:07:02 155人浏览 独家记忆
摘要

本篇内容介绍了“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, $srcPath, $dstX = 0, $dstY = 0, $srcX = 0, $srcY = 0, $pct = 100, $filename = '')    {        //创建图片的实例        $dst = imagecreatefromstring(file_get_contents($dstPath));        $src = imagecreatefromstring(file_get_contents($srcPath));        //获取水印图片的宽高        list($src_w, $src_h) = getimagesize($srcPath);        //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果//        imagecopymerge($dst, $src, 80, 125, 0, 0, $src_w, $src_h, 100);        imagecopymerge($dst, $src, $dstX, $dstY, $srcX, $srcY, $src_w, $src_h, $pct);        //如果水印图片本身带透明色,则使用imagecopy方法        //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $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($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, $srcX = 0, $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怎么实现图片合并”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: PHP怎么实现图片合并

本文链接: https://www.lsjlt.com/news/353673.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • PHP怎么实现图片合并
    本篇内容介绍了“PHP怎么实现图片合并”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备工作需要海报的底图小程序码的图片 代码部分...
    99+
    2023-07-05
  • php怎么合并图片并变动部分颜色
    本篇内容主要讲解“php怎么合并图片并变动部分颜色”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么合并图片并变动部分颜色”吧!php的GD库提供了很多基...
    99+
    2022-10-19
  • php怎么上传图片并显示图片
    在PHP中,可以使用`$_FILES`数组来处理上传的文件。以下是一个简单的示例代码,演示了如何上传图片并显示图片:```上传图片`...
    99+
    2023-10-11
    php
  • php怎么实现图片查询并显示功能
    在网站开发中,图片传送是一个非常重要的功能。其中,PHP查询图片传送是一种常见的实现方式。它可以让用户通过输入关键字,在数据库中查询相关的图片,并将其显示在网页上,以便用户进行查看和下载。实现PHP查询图片并显示的方法有很多种,下面我们将介...
    99+
    2023-05-14
  • C#实现合并多张图片为GIF动态图
    目录文章描述开发环境开发工具实现代码实现效果代码解析文章描述 在前一篇写了如何将一张GIF动态图分解成一帧一帧的图片,这一篇我们就把喝进去的一瓢水给还回去。即把一张又一张的图片去拼合...
    99+
    2022-12-15
    C#合并图片为gif C#合并图片 C# gif
  • c++怎么结合opencv实现读取多张图片并显示
    这篇文章主要介绍“c++怎么结合opencv实现读取多张图片并显示”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c++怎么结合opencv实现读取多张图片并显示”文章能帮助大家解决问题。方法一主要函...
    99+
    2023-07-04
  • 怎么在Cacti中合并两幅图片
    本篇内容主要讲解“怎么在Cacti中合并两幅图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Cacti中合并两幅图片”吧!Cacti是一个很棒的开源网络监视系统,它广泛使用于图形化地展示...
    99+
    2023-06-16
  • php合成图片出现乱码怎么办
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php合成图片出现乱码怎么办php 下生成图片,或者文件乱码前言:我们用php来生成excel或者图片的时候有时候总是会出现乱码,网上大多说设置header ,但是设置...
    99+
    2015-08-14
    php 乱码
  • 基于Python怎么实现合并多张图片转成mp4视频
    一、需要调入的模块1、imageio模块Python模块imageio是一个用于读取和写入图像及视频数据的库。它支持多种格式,并且可以使用NumPy数组进行操作。以下是一些关键的函数:imageio.imread():从文件中读取图像数据并...
    99+
    2023-05-15
    Python
  • php怎么实现上传图片
    PHP是一种广泛用于Web开发的服务器端脚本语言,可以实现很多Web功能。其中,上传图片是Web开发中常见的一项任务,本文将介绍PHP中的上传图片方法。一、基本概念在介绍上传图片方法之前,我们需要了解一些基本概念:$_FILES$_FILE...
    99+
    2023-05-14
  • 使用canvas怎么拼合图片并导出
    今天就跟大家聊聊有关使用canvas怎么拼合图片并导出,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。canvas绘图的基本方法,如下:const myCanvas ...
    99+
    2023-06-09
  • php合成图片出现乱码怎么解决
    本篇内容介绍了“php合成图片出现乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php合成图片出现乱码的解决办法:1、打开相应的...
    99+
    2023-06-22
  • Python如何实现合并多张图片成视频
    本篇内容介绍了“Python如何实现合并多张图片成视频”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并多张图片到视频的方法说明除了使用 O...
    99+
    2023-07-05
  • java怎么实现图片上传并显示
    在Java中实现图片上传并显示的一种常见的方法是使用Servlet和JSP。下面是一个简单的示例代码: 创建一个Servlet类来...
    99+
    2023-10-24
    java
  • php怎么实现图片验证码
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑。php怎么实现图片验证码?PHP实现图片验证码功能验证码: captcha, 是一种用于区别人和电脑的技术原理(Completely Automated Public ...
    99+
    2017-09-20
    php
  • 怎么用php实现图片上传
    这篇文章主要介绍了怎么用php实现图片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用php实现图片上传文章都会有所收获,下面我们一起来看看吧。一、创建html页面首先,我们要创建一个html页面,这个...
    99+
    2023-07-05
  • PHP怎么上传图片并实现特定的命名规则
    今天小编给大家分享一下PHP怎么上传图片并实现特定的命名规则的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本的图片上传...
    99+
    2023-07-05
  • Python怎么实现视频分解成图片及图片合成视频
    这篇文章主要介绍了Python怎么实现视频分解成图片及图片合成视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现视频分解成图片及图片合成视频文章都会有所收获,下面我们一起来看看吧。一、pyt...
    99+
    2023-06-29
  • php怎么实现图片格式转jpg
    图片格式转JPG:使用PHP图片是我们网站和应用程序中的基本元素之一。但是,有时候我们需要将图片转换为其他格式。其中,将图片转换为JPG格式是最常见的需求之一。在这篇文章中,我们将学习如何使用PHP语言将图片转换为JPG格式。为什么要将图片...
    99+
    2023-05-14
  • PHP怎么实现上传图片功能
    本篇内容主要讲解“PHP怎么实现上传图片功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么实现上传图片功能”吧!首先我们在form表单加上上传附件#file,上传按钮#imgbut,记...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作