php利用PHP QR Code生成二维码(带logo)

 更新时间:2016年11月25日 17:26  点击:2234
我们要生成二维码都需要借助一些类库来实现了,下面我介绍利用PHP QR Code生成二维码吧,生成方法很简单,下面我来介绍一下。

利用php类库PHP QR Code来实现,不需要装额外的php扩展
首先下载类库包,有时候地址打不开
地址:http://phpqrcode.sourceforge.net/
下载:http://sourceforge.net/projects/phpqrcode/

使用时一般引入phpqrcode.php文件即可

具体使用方法举例

直接浏览器输出:

 代码如下 复制代码

<?php
    include "phpqrcode/phpqrcode.php";
    $value="http://www.111cn.net";
    $errorCorrectionLevel = "L";
    $matrixPointSize = "4";
    QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize);
    exit;
?>

图片文件输出

 代码如下 复制代码

<?php
   
//文件输出
    include('phpqrcode/phpqrcode.php');
   
// 二维码数据
    $data = 'http://www.111cn.net';
   
// 生成的文件名
    $filename = '1111.png';
   
// 纠错级别:L、M、Q、H
    $errorCorrectionLevel = 'L';
   
// 点的大小:1到10
    $matrixPointSize = 4;
    QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
?>

生成中间带logo的二维码

 代码如下 复制代码

<?php
   
//生成中间带logo的二维码
    include('phpqrcode/phpqrcode.php');
    $value='http://www.111cn.net';
    $errorCorrectionLevel = 'L';
    $matrixPointSize = 10;
    QRcode::png($value, 'xiangyang.png', $errorCorrectionLevel, $matrixPointSize, 2);
    echo "QR code generated"."<br />";
    $logo = 'bdlogo.gif';
    $QR = 'xiangyang.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_height = imagesy($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);
    }
    imagepng($QR,'xiangyanglog.png');
?>

本文章来给大家介绍一个Drupal 通过cURL Post方式发送一个文件实现,如果你正在使用Drupal cms不防进入参考一下哦。

众所周知PHP的cURL扩展可以用来模拟表单提交。在Drupal中有drupal_http_request函数来执行一个HTTP请求,它可以通过POST方式来发送一个文件,但是使用起来没有cURL那么方便。 这里我们主要讲解如何在Drupal中Post一个文件到远程的服务器地址。

网页Form表单

 代码如下 复制代码
<form enctype=”multipart/form-data” method=”POST” url=”http://blog.lixiphp.com/demo/http_request/post.php”>
<input name=”username” type=”text” value=”" />
<input name=”password” type=”password” value=”" />
<input type=”checkbox” name=”rememberme” id=”" />
<input name=”avatar” type=”file” />
</form>

上面表单包含了演示文本框、密码、复选框和文件形式的提交。

Drupal cURL模拟表单提交POST

 代码如下 复制代码

<?php
$url = ‘http://blog.lixiphp.com/demo/http_request/post.php’;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
$post = array(
‘username’ => ‘lixiphp’,
‘password’ => ’123456′,
‘rememberme’ => ’1′,
‘avatar’=> ‘@’.$filename,
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);

$response

的值为网页Form表单提交后输出的HTML。

在php中删除数组元素与增加数组元素的方法有很多种,下面小编来给各位同学总结一些实用的与常用的数组元素增加删除实例。

增加数据元素有函数,array_push(),array_unshift()函数

一、在数组的末尾添加元素

1.array_push

使用方法

 代码如下 复制代码

<?php
    $stack = array("orange", "banana");
    array_push($stack, "apple", "raspberry");
    print_r($stack);
?>
输出:
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

2.$arr[]

使用方法

<?php

    $arr = array("orange", "banana");
    $arr[]='apple';
    print_r($arr);
?>

这两种的效果是一样的

注意:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。

二、在数组开头插入元素

1.array_unshift

使用方法

 代码如下 复制代码

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

输出

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

删除数组元素unset,或直接设置空


如果要在某个数组中删除一个元素,可以直接用的unset,但今天看到的东西却让我大吃一惊

 代码如下 复制代码


<?php 
$arr = array('a','b','c','d'); 
unset($arr[1]); 
print_r($arr); 
?> 
 
print_r($arr)

之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d )

 

那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():

 代码如下 复制代码

<?php 
$arr = array('a','b','c','d'); 
array_splice($arr,1,1); 
print_r($arr);
?>

print_r($arr)之后,结果是Array ( [0] => a [1] => c [2] => d )

删除数组指定元素

如array_slice() 函数在数组中根据条件取出一段值,并返回.

array_slice(array,offset,length,preserve)

array:数组

offset: 规定取出元素的开始位置。如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。

 

 代码如下 复制代码

<?php
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));
?>

输出

Array ( [0] => Cat [1] => Horse )

还有array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值.

相对的array_pop() 函数删除数组中的最后一个元素.

几个函数用下来觉得array_search()比较实用

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

 代码如下 复制代码


$array = array('1', '2', '3', '4', '5');

$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素

print_r($array);

输出

array('1', '2', '4', '5');

我们这里介绍的是在数组中再增加关联数组了,这个就合成了多维数组,下面我来给大家举几个实例,希望对各位同学会有所帮助哈。

在"php 数组添加元素方法总结这篇文章中介绍了如何给数组添加元素,那么我想添加$array=array('title'=>'php教程')这样的元素怎么办呢。

array_push, array_pop, array_shift, array_unshift 这几个函数都是为数字类型的索引数组设计的。
要想实现关联数组的添加可以使用array_merge方法或者是+操作符

我们先来看数组中增加数组元素

1. php中增加数组元素的方法:

(1)通过赋值增加数组元素 :$states[‘name’]=’Tom’;

(2)int array_push(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的末尾,成功时返回true,否则返回false,其中variable可以是多个。

(3)int array_unshift(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的数组头,成功时返回true,否则返回false,其中variable可以是多个。所有已有的数值键都会相应地修改,而关联键不受影响。

(4)array array_pad(array target_array,integer length,mixed pad_value) 将target_array 的大小增加到length指定的长度。

使用array_push或者array_unshift这两个方法行么?

答案是否定的


具体方法:

1.使用array_merge方法实现类似array_unshift在开头添加元素的功能

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array_merge(array('front' => 'hello'), $queue);
/*
Array
(
    [front] => hello
    [0] => a
    [1] => b
)
*/
?>

2.+操作符

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array('front' => 'Hello') + $queue;
?>

输出结果与使用array_merge方法一样。

3.在元素结尾添加关联数组元素

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue['front'] = 'hello';
/*
输出
Array
(
    [0] => a
    [1] => b
    [front] => hello 
)
*/
?>

微信公众平台推出一自定义菜单功能,我们可以简单的直接在后台编辑自定义菜单,也可以利用api来设置菜单,下面我来介绍一下操作方法

 腾讯微信3月19日正式公布公众平台自定义菜单功能。目前该功能仅提供给企业和机构,且内测资格需要申请。对于这一新增功能,目前仅有少数账号已经开通。至此,微信的商业化价值被进一步挖掘出来。

 

微信公众平台推出自定义菜单功能

 

   开发者可利用该功能为公众账号的会话界面底部增加自定义菜单。用户点击菜单中的选项,可以调出相应的回复信息或网页链接。

菜单创建
接口说明
通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求说明
http请求方式:POST

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

结构体其实就是一个json格式的字符串,相信很多朋友就卡在这里了,怎么往这个接口地址 post 一个结构体呢,实现代码如下:

 代码如下 复制代码

public static void main(String[] args) throws Exception {
    URL url = new URL("https://api.weixin.qq.com/cgi-bin
                                 /menu/create?access_token=TOKEN");
        String responeJsonStr = "{"+
                                     ""button":["+
                                     "{"name":"酒店预订","+
                                     ""sub_button":["+
                             "{"+
                                ""type":"click","+
                                ""name":"附近酒店","+
                                ""key":"jintoneinn488878-1""+
                            "},"+
                            "{"+
                                ""type":"click","+
                                ""name":"查找酒店","+
                                ""key":"jintoneinn488878-2""+
                            "}"+
                        "]"+
                    "}"
                "]"+
            "}";
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.connect();
        conn.getOutputStream().write(responeJsonStr.getBytes("utf-8"));
        InputStream is = conn.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(is,"utf-8"));
        StringBuffer buffer = new StringBuffer();
        String line = "";
        while ((line = in.readLine()) != null) {
            buffer.append(line);
        }
        System.out.println(buffer.toString()); 
    }


菜单查询
接口说明

查询当前使用的自定义菜单结构。

请求说明

http请求方式:GET

https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码

{"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":"click","name":"歌手简介","key":"V1001_TODAY_SINGER","sub_button":[]},{"name":"菜单","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD","sub_button":[]},{"type":"click","name":"赞一下我们","key":"V1001_GOOD","sub_button":[]}]}]}}


菜单删除
接口说明

取消当前使用的自定义菜单。

请求说明

http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码
{"errcode":0,"errmsg":"ok"}

 

[!--infotagslink--]

相关文章

  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • 浅谈js二维码扫码登录是什么原理

    这篇文章主要介绍了浅谈js二维码扫码登录是什么原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • .NET C#利用ZXing生成、识别二维码/条形码

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。这篇文章主要给大家介绍了.NET C#利用ZXing生成、识别二维码/条形码的方法,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴。...2020-06-25
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • C#利用QrCode.Net生成二维码(Qr码)的方法

    QrCode.Net是一个使用C#编写的用于生成二维码图片的类库,使用它可以非常方便的为WinForm、WebForm、WPF、Silverlight和Windows Phone 7应用程序提供二维码编码输出功能。可以将二维码文件导出为eps格式...2020-06-25
  • php中利用str_pad函数生成数字递增形式的产品编号

    解决办法:$str=”QB”.str_pad(($maxid[0]["max(id)"]+1),5,”0″,STR_PAD_LEFT ); 其中$maxid[0]["max(id)"]+1) 是利用max函数从数据库中找也ID最大的一个值, ID为主键,不会重复。 str_pad() 函数把字符串填充为指...2013-10-04
  • C#生成Word文档代码示例

    这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25
  • 基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作

    这篇文章主要介绍了基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-01
  • JS生成某个范围的随机数【四种情况详解】

    下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
  • Vue组件文档生成工具库的方法

    本文主要介绍了Vue组件文档生成工具库的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-11