用百度BAE Image服务生成QR二维码
2013-05-26我曾在几个月前移植了一个叫“Migs for 百度BAE”的图床程序。受到当时条件的限制,我采用的是Fetch URL方式生成略缩图,但这种方式效率低并且浪费流量。因为后来百度BAE推出了Image服务,加上一些网友反映有时不能正常生成略缩图的情况,所以我于昨天用BAE的Image服务把略缩图生成模块重写了一下。
我在阅读BAE Image服务文档的过程中,我发现这真是个好东西啊——不仅支持最简单的图片缩放、图片裁剪、文字水印、图片合成功能,而且支持二维码生成和WebP格式图片转换!
目前常用的二维码生成服务是Google Chart提供的二维码API,通过调用
https://chart.googleapis.com/chart?cht=qr&chs=200x200&choe=UTF-8&chld=L|4&chl=https://mawenjian.net/
来生成二维码图像。但众所周知,Google服务的是某几个国家之外的世界,加之传输内容需经过入侵检测装置,所以其服务质量不仅取决于其自身的技术实力。
与Google的服务相比,BAE的优势有二:第一、服务器位于国内,更稳定,响应速度更快;第二、可以自定义的参数更多,不仅支持自定义图片大小,更可以设置二维码的前景色及背景色。
BAE的二维码服务也有缺点——因为二维码生成属于BAE Image服务的一部分,必须在BAE环境中才能使用。如果想在别处用的话,需要在BAE把Image服务封装成API接口,好在这个工作非常简单。
下面是一个利用BAE生成二维码的简单例子:
<?php
require_once('BaeImageService.class.php');
$text ="欢迎访问马文建的博客 - https://mawenjian.net/";
//创二维码操作的对象BaeImageQRCode
$baeImageQRCode = new BaeImageQRCode();
$baeImageQRCode->setText($text);
$baeImageQRCode->setLevel(3);
$baeImageQRCode->setVersion(10);
$baeImageQRCode->setSize(2);
//创建服务功能对象
$baeImageService = new BaeImageService();
$retVal = $baeImageService->applyQRCodeByObject($baeImageQRCode);
if($retVal !==false && isset($retVal['response_params']) && isset($retVal['response_params']['image_data'])){
header("Content-type:image/jpg");
$imageSrc = base64_decode($retVal['response_params']['image_data']);
echo $imageSrc;
}else{
echo 'qr encoding failed, error:' . $baeImageService->errmsg() . "\n";
}
?>
生成的QR二维码如下:
BAE二维码相关的文档:
http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/php/image
您可能也喜欢:
10 条评论
-
-
非技术流路过。。顶一个
-
BaeImageService.class.php 这个类在哪里下
-
TAT..."您的服务配额不足,无法新增服务"
-
需要在BAE把Image服务封装成API接口,好在这个工作非常简单。
马哥 求教 怎么封装成API借口呢
-
菜鸟流伤不起啊
BaeImageService.class.php 这文件在那啊?