加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

利用phpqrcode二维码生成类库和imagecopymerge函数制拼接图片的经验

发布时间:2020-05-25 23:01:48 所属栏目:PHP 来源:互联网
导读:前期准备 引入phpqrcode类库(下载地址:https://sourceforge.net/projects/phpqrcode/) PHP开启GD扩展库支持 1、利用phpqrcode生成二维码

前期准备

  • 引入phpqrcode类库(下载地址:)
  • PHP开启GD扩展库支持

1、利用phpqrcode生成二维码:

png(, = , = QR_ECLEVEL_L, = 3, = 4,= = QRencode::factory(,, ->encodePNG(,,=默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径; * 第3个参数$level:容错级别,默认为L。 * 可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%)。 * 这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别 * 第4个参数$size:控制生成图片的大小,默认为4; * 第5个参数$margin:控制生成二维码的空白区域大小; * 第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径; *

  使用示例:

("./phpqrcode.php" = "http://www.baidu.com" Q -> M -> L = 'H' = 7 = "test.png"::png(,,,,1

2、如果要在生成的二维码中间放置logo的话:

M -> L = 'H' = 7 = "test.png"::png(,1 = './img/logo.png' = = './img/qrlogo.png'(( = imagecreatefromstring(()); = imagecreatefromstring(()); = imagesx( = imagesy( = imagesx(); = imagesy();
    <span style="color: #800080"&gt;$logo_qr_width</span> = <span style="color: #800080"&gt;$QR_width</span> / 5;   <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo的宽度(占二维码的1/5)</span>
    <span style="color: #800080"&gt;$scale</span> = <span style="color: #800080"&gt;$logo_width</span>/<span style="color: #800080"&gt;$logo_qr_width</span>;  <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;logo的宽度缩放比(本身宽度/组合后的宽度)</span>
    <span style="color: #800080"&gt;$logo_qr_height</span> = <span style="color: #800080"&gt;$logo_height</span>/<span style="color: #800080"&gt;$scale</span>; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo的高度</span>
    <span style="color: #800080"&gt;$from_width</span> = (<span style="color: #800080"&gt;$QR_width</span> - <span style="color: #800080"&gt;$logo_qr_width</span>) / 2;  <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo左上角所在坐标点

    //重新组合图片,并调整大小</span>
    <span style="color: #008000"&gt;/*</span><span style="color: #008000"&gt;*
     * 函数 imagecopyresampled():将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。参数详解
     *
     * bool imagecopyresampled ( resource $dst_image,resource $src_image,int $dst_x,int $dst_y,int $src_x,int $src_y,int $dst_w,int $dst_h,int $src_w,int $src_h )
     *
     * dst_image 目标图象连接资源。
     * src_image 源图象连接资源。
     * dst_x 目标 X 坐标点。
     * dst_y 目标 Y 坐标点。
     * src_x 源的 X 坐标点。
     * src_y 源的 Y 坐标点。
     * dst_w 目标宽度。
     * dst_h 目标高度。
     * src_w 源图象的宽度。
     * src_h 源图象的高度。
     </span><span style="color: #008000"&gt;*/</span><span style="color: #000000"&gt;
    imagecopyresampled(</span><span style="color: #800080"&gt;$QR</span>,<span style="color: #800080"&gt;$logo</span>,<span style="color: #800080"&gt;$from_width</span>,<span style="color: #800080"&gt;$logo_qr_width</span>,<span style="color: #800080"&gt;$logo_qr_height</span>,<span style="color: #800080"&gt;$logo_width</span>,<span style="color: #800080"&gt;$logo_height</span><span style="color: #000000"&gt;);
    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; PHP函数:imagepng ( resource image [,string filename] ):以 PNG 格式将图像输出到浏览器或文件</span>
    imagepng(<span style="color: #800080"&gt;$QR</span>,<span style="color: #800080"&gt;$QRlogo</span><span style="color: #000000"&gt;);
    </span><span style="color: #0000ff"&gt;echo</span> '<image src="'.<span style="color: #800080"&gt;$QRlogo</span>.'"/&gt;'<span style="color: #000000"&gt;;
}

}
creatQrcode();

3、如果加了logo的二维码要放在一张海报上的话:

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

M -> L = 'H' = 7 = "test.png"::png(,1//———————————————————————————————————————————————————————————————— //二维码上添加logo</span> <span style="color: #800080"&gt;$logo</span> = './img/logo.png'<span style="color: #000000"&gt;; </span><span style="color: #800080"&gt;$QR</span> = <span style="color: #800080"&gt;$filename</span><span style="color: #000000"&gt;; </span><span style="color: #800080"&gt;$QRlogo</span> = './img/qrlogo.png'<span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;if</span>(<span style="color: #008080"&gt;file_exists</span>(<span style="color: #800080"&gt;$logo</span><span style="color: #000000"&gt;)){ </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 函数:imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像</span> <span style="color: #800080"&gt;$QR</span> = imagecreatefromstring(<span style="color: #008080"&gt;file_get_contents</span>(<span style="color: #800080"&gt;$QR</span>)); <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;目标图象连接资源。</span> <span style="color: #800080"&gt;$logo</span> = imagecreatefromstring(<span style="color: #008080"&gt;file_get_contents</span>(<span style="color: #800080"&gt;$logo</span>)); <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;源图象连接资源。 // php函数:imagesx(resource image):获取图像宽度 // PHP函数:imagesy(resource image):获取图像高度</span> <span style="color: #800080"&gt;$QR_width</span> = imagesx(<span style="color: #800080"&gt;$QR</span><span style="color: #000000"&gt;); </span><span style="color: #800080"&gt;$QR_height</span> = imagesy(<span style="color: #800080"&gt;$QR</span><span style="color: #000000"&gt;); </span><span style="color: #800080"&gt;$logo_width</span> = imagesx(<span style="color: #800080"&gt;$logo</span>);<span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;logo图片宽度 </span> <span style="color: #800080"&gt;$logo_height</span> = imagesy(<span style="color: #800080"&gt;$logo</span>);<span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;logo图片高度 </span> <span style="color: #800080"&gt;$logo_qr_width</span> = <span style="color: #800080"&gt;$QR_width</span> / 5; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo的宽度(占二维码的1/5)</span> <span style="color: #800080"&gt;$scale</span> = <span style="color: #800080"&gt;$logo_width</span>/<span style="color: #800080"&gt;$logo_qr_width</span>; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;logo的宽度缩放比(本身宽度/组合后的宽度)</span> <span style="color: #800080"&gt;$logo_qr_height</span> = <span style="color: #800080"&gt;$logo_height</span>/<span style="color: #800080"&gt;$scale</span>; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo的高度</span> <span style="color: #800080"&gt;$from_width</span> = (<span style="color: #800080"&gt;$QR_width</span> - <span style="color: #800080"&gt;$logo_qr_width</span>) / 2; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;组合之后logo左上角所在坐标点 //重新组合图片,并调整大小</span> imagecopyresampled(<span style="color: #800080"&gt;$QR</span>,<span style="color: #800080"&gt;$QRlogo</span><span style="color: #000000"&gt;); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;—————————————————————————————————————————— // 加了logo的二维码放在海报之类的背景图上面</span> <span style="color: #800080"&gt;$dst_path</span> = './img/xuexi.jpg'; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;底图</span> <span style="color: #800080"&gt;$src_path</span> = <span style="color: #800080"&gt;$QRlogo</span>; <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;覆盖图,我们就继续用上面的那张图QRlogo //创建图片实例</span> <span style="color: #800080"&gt;$dst</span> = imagecreatefromstring(<span style="color: #008080"&gt;file_get_contents</span>(<span style="color: #800080"&gt;$dst_path</span><span style="color: #000000"&gt;)); </span><span style="color: #800080"&gt;$src</span> = imagecreatefromstring(<span style="color: #008080"&gt;file_get_contents</span>(<span style="color: #800080"&gt;$src_path</span><span style="color: #000000"&gt;)); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;获取覆盖图的宽高</span> <span style="color: #0000ff"&gt;list</span>(<span style="color: #800080"&gt;$src_w</span>,<span style="color: #800080"&gt;$src_h</span>) = <span style="color: #008080"&gt;getimagesize</span>(<span style="color: #800080"&gt;$src_path</span><span style="color: #000000"&gt;); </span><span style="color: #008000"&gt;/*</span><span style="color: #008000"&gt;* * * PHP函数:imagecopymerge()/imagecopy() * * bool imagecopymerge ( resource $dst_im,resource $src_im,int $src_h,int $pct ) * 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。 * </span><span style="color: #008000"&gt;*/</span><span style="color: #000000"&gt; imagecopymerge(</span><span style="color: #800080"&gt;$dst</span>,<span style="color: #800080"&gt;$src</span>,20,120,<span style="color: #800080"&gt;$src_w</span>,<span style="color: #800080"&gt;$src_h</span>,100<span style="color: #000000"&gt;); </span><span style="color: #0000ff"&gt;list</span>(<span style="color: #800080"&gt;$dst_w</span>,<span style="color: #800080"&gt;$dst_h</span>) = <span style="color: #008080"&gt;getimagesize</span>(<span style="color: #800080"&gt;$dst_path</span><span style="color: #000000"&gt;); imagepng(</span><span style="color: #800080"&gt;$dst</span>,'./img/aaa.png'<span style="color: #000000"&gt;); imagedestroy(</span><span style="color: #800080"&gt;$dst</span><span style="color: #000000"&gt;); imagedestroy(</span><span style="color: #800080"&gt;$src</span><span style="color: #000000"&gt;); }

}
creatQrcode();

(注:很多参考网上现有的资料,如果有错误,欢迎留言指正!)

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读