资讯专栏INFORMATION COLUMN

分享一下利用phpqrcode二维码生成类库和imagecopymerge函数制拼合(镶嵌、合并、水

Turbo / 1742人阅读

摘要:二维码图片宽度二维码图片高度图片宽度图片高度重新组合图片并调整大小最后直接输出图像即可还是老样子,我们给图片来个名字这次用为随机数时间戳而后输出图像整个带的二维码生成就完成了。

利用 phpqrcode 二维码生成类库和 imagecopymerge 函数制作带二维码的图片

首先引用phpqrcode类库

下载phpqrcode类库

下载地址就不提供了,百度一搜一大把;

新建php文件用于创建二维码

请注意看(每段中文后面都会有一定的代码示例)
比如:新建文件 qrcode.php
之后在文件中引入phpqrcode类库 代码演示 
include("../phpqrcode/phpqrcode.php"); 
而后就到了设置二维码的链接地址了
$url = "http://www.baidu.com";
接着设置二维码的容错级别,何为容错级别?通俗点就是容错级别百分比越高,就越容易识别,下面是三种容错级别:
L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%);
按照效果排序依次是  H -> Q -> M -> L
所以,就直接用 H 代码示例:
$errorCorrectionLevel = "H";//容错级别 
而后继续设置生成二维码图片的大小
$matrixPointSize = 7;//图片大小慢慢自己调整,只要是int就行
设置生成二维码的图片名称,博主用了5为随机数+时间戳生成文件名,为了防止文件名重复相互覆盖。。
QR = rand(10000,99999).time().".png";
最后就到了生成二维码啦!
直接调用ORcode::png()就行,带上刚才设置好的参数。最后的这个参数*2*是代表白边的宽度。
QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2); 

如果你想在二维码中间放个LOGO那么你就继续看!

首先,引用一张图片(you company LOGO)
$logo = "./images/logo.png";
而后为了程序的完整性,简单的判断一下。也许某些童鞋不要LOGO的,注意看下面的代码,博主注释的都比较清楚的。
if ($logo !== FALSE) { 
$QR = imagecreatefromstring(file_get_contents($QR)); 
$logo = imagecreatefromstring(file_get_contents($logo)); 
$QR_width = imagesx($QR);//二维码图片宽度 
$QR_height = imagesy($QR);//二维码图片高度 
$logo_width = imagesx($logo);//logo图片宽度 
$logo_height = imagesy($logo);//logo图片高度 
$logo_qr_width = $QR_width / 5; 
$scale = $logo_width/$logo_qr_width; 
$logo_qr_height = $logo_height/$scale; 
$from_width = ($QR_width - $logo_qr_width) / 2; 
//重新组合图片并调整大小 
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 
$logo_qr_height, $logo_width, $logo_height); 
    } 

最后直接输出图像即可

还是老样子,我们给图片来个名字;这次用6为随机数+时间戳
$QRM = rand(100000,999999).time().".png";
imagepng($QR, $QIMG);
而后输出图像 echo ""; 

整个带logo的二维码生成就完成了。如果还要拼合在其他图像上就继续接着看!(文章结尾有整个项目的代码,记得点赞!)

imagecopymerge函数制拼合(镶嵌,合并)图片 同样适合水印之类的

首先还是设置图片,底图和上面的覆盖图

$dst_path = "a.png";//底图
$src_path = $QIMG;//覆盖图,我们就继续用上面的那张图QIMG

创建图片的实例

$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));

获取覆盖图片的宽高

list($src_w, $src_h) = getimagesize($src_path);

将图片复制到目标图片(底图)上,最后个参数是设置透明度(50为半透明,100为不透明,自己随意设置即可),这里实现不透明效果,两个20是控制图片坐标位置,自己慢慢调整

imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100);

如果水印图片本身带透明色,则使用imagecopy方法

imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);//博主的不是透明的,所以不用这段~用下面的

生成图片

list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);

而后用switch判断一下图片的类型

switch ($dst_type) {
        case 1://GIF
            header("Content-Type: image/gif");
            imagegif($dst);
            break;
        case 2://JPG
            header("Content-Type: image/jpeg");
            imagejpeg($dst);
            break;
        case 3://PNG
            header("Content-Type: image/png");
            imagepng($dst);
            break;
        default:
            break;
    }

最后将图片打印出来

imagedestroy($dst);
imagedestroy($src);

整个程序的完整代码,伸手党们!记得点赞打赏收藏等等等等!

include("../phpqrcode/phpqrcode.php"); 
$url = "http://www.baidu.com"; //二维码内容
$errorCorrectionLevel = "H";//容错级别 
$matrixPointSize = 7;//生成图片大小 
//生成二维码图片 
$QR = rand(10000,99999).time().".png";
QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2); 
$logo = "../images/logo.png";//准备好的logo图片
//生成时间戳处理覆盖图片防止权限的存在
// $op = time();
// $QR = "qrcode.png";//已经生成的原始二维码图 
if ($logo !== FALSE) { 
    $QR = imagecreatefromstring(file_get_contents($QR)); 
    $logo = imagecreatefromstring(file_get_contents($logo)); 
    $QR_width = imagesx($QR);//二维码图片宽度 
    $QR_height = imagesy($QR);//二维码图片高度 
    $logo_width = imagesx($logo);//logo图片宽度 
    $logo_height = imagesy($logo);//logo图片高度 
    $logo_qr_width = $QR_width / 5; 
    $scale = $logo_width/$logo_qr_width; 
    $logo_qr_height = $logo_height/$scale; 
    $from_width = ($QR_width - $logo_qr_width) / 2; 
    //重新组合图片并调整大小 
    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 
    $logo_qr_height, $logo_width, $logo_height); 
} 
//输出图片 
$QIMG = rand(100000,999999).time().".png";
imagepng($QR, $QIMG); 

$dst_path = "a.png";//底图
$src_path = $QIMG;//覆盖图

//创建图片的实例
$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));
//获取覆盖图图片的宽高
list($src_w, $src_h) = getimagesize($src_path);
//将覆盖图复制到目标图片上,最后个参数100是设置透明度(100是不透明),这里实现不透明效果,两个20是覆盖图坐标位置
imagecopymerge($dst, $src, 20, 20, 0, 0, $src_w, $src_h, 100);
//如果覆盖图图片本身带透明色,则使用imagecopy方法
//imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);
//输出图片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
switch ($dst_type) {
    case 1://GIF
        header("Content-Type: image/gif");
        imagegif($dst);
        break;
    case 2://JPG
        header("Content-Type: image/jpeg");
        imagejpeg($dst);
        break;
    case 3://PNG
          header("Content-Type: image/png");
        imagepng($dst);
        break;
    default:
        break;
    }
imagedestroy($dst);
imagedestroy($src);
源代码理解不了的,请看上面的文章,我都写的比较清楚,代码里面也注释了~遇到问题解决不了请百度,实在不行就留言给博主,博主会第一时间回复你!

大功告成,博主要看巴萨打拉斯帕尔马斯了!但愿我梅老板能再继续进逆天任意球!

okey bye see you!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22291.html

相关文章

  • 分享一下利用phpqrcode维码生成库和imagecopymerge函数拼合镶嵌合并

    摘要:二维码图片宽度二维码图片高度图片宽度图片高度重新组合图片并调整大小最后直接输出图像即可还是老样子,我们给图片来个名字这次用为随机数时间戳而后输出图像整个带的二维码生成就完成了。 利用 phpqrcode 二维码生成类库和 imagecopymerge 函数制作带二维码的图片 首先引用phpqrcode类库 下载phpqrcode类库 下载地址就不提供了,百度一搜一大把; 新建...

    SexySix 评论0 收藏0
  • php生成维码图片

    摘要:第一种方法第一种方法利用使用最广泛,最方便的技术实现封装生成二维码图片的函数方法利用生成二维码图片二维码内容参数生成二维码的尺寸,宽度和高度的值可选参数,纠错等级生成的二维码离边框的距离使用注意事项先构建内容字符串调用函数生成构建内容字符串 第一种方法: 1,第一种方法:利用使用最广泛,最方便的Google api技术实现; 2, 第二种方法: 1,第二种方法使用php类库PHP QR...

    张迁 评论0 收藏0
  • 移动端H5页面注意事项

    摘要:移动端活动页面常常需要能够分享到各种社交中,常用的有微信等。微信二维码问题同一个页面里要是有两个二维码,长按扫描总是只能扫出左侧第一个二维码。 首发于简书博客:http://www.jianshu.com/p/e958... 2017-11-25 更新:5. 使用 Gulp 拼合图片 1. 单个页面内容不能过多 设计常用尺寸:750 x 1334 / 640 x 1134,包含了手机顶...

    weknow619 评论0 收藏0
  • 移动端H5页面注意事项

    摘要:移动端活动页面常常需要能够分享到各种社交中,常用的有微信等。微信二维码问题同一个页面里要是有两个二维码,长按扫描总是只能扫出左侧第一个二维码。 首发于简书博客:http://www.jianshu.com/p/e958... 2017-11-25 更新:5. 使用 Gulp 拼合图片 1. 单个页面内容不能过多 设计常用尺寸:750 x 1334 / 640 x 1134,包含了手机顶...

    madthumb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<