图片二维码

最近更新时间:2023-05-17 10:47:35

我的收藏

简介

本文档提供关于对象存储图片二维码相关的 API 概览以及 SDK 示例代码。
API
操作描述
指定的文本信息(URL 或文本),生成对应的二维码或条形码
二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克


二维码生成

功能说明

数据万象二维码生成功能可根据用户指定的文本信息(URL 或文本),生成对应的二维码或条形码。

方法原型

String generateQrcode(GenerateQrcodeRequest request);

请求示例

//1.创建二维码生成请求对象
GenerateQrcodeRequest request = new GenerateQrcodeRequest();
//2.添加请求参数 参数详情请见 API 接口文档
request.setBucketName("examplebucket-1250000000");
request.setQrcodeContent("数据万象");
request.setWidth("400");
request.setMode("0");
String imageBase64 = cosClient.generateQrcode(request);

参数说明

Request 中的具体数据描述如下:
节点名称(关键字)
描述
类型
是否必选
bucketName
Bucket 的命名规则为 BucketName-APPID,详情请参见 存储桶概述
String
QrcodeContent
可识别的二维码文本信息
String
width
指定生成的二维码或条形码的宽度,高度会进行等比压缩
String
Mode
生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0
int

返回结果说明

成功:成功则返回 String,信息为 base64编码的图片。
失败:发生错误(例如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理

二维码识别

对象存储二维码识别功能可识别图片中有效二维码的位置及内容,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),并可对识别出的二维码添加马赛克。

示例代码1:上传时识别二维码

// bucket 名需包含 appid
// API 请参见 https://cloud.tencent.com/document/product/436/54070
String bucketName = "examplebucket-1250000000";
String key = "qrcode.png";
File localFile = new File("E://qrcode.png");
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PicOperations picOperations = new PicOperations();
picOperations.setIsPicInfo(1);
List<PicOperations.Rule> ruleList = new LinkedList<>();
PicOperations.Rule rule = new PicOperations.Rule();
rule.setBucket(bucketName);
rule.setFileId("qrcode-1.png");
rule.setRule("QRcode/cover/1");
ruleList.add(rule);
picOperations.setRules(ruleList);
putObjectRequest.setPicOperations(picOperations);
try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
CIUploadResult ciUploadResult = putObjectResult.getCiUploadResult();
System.out.println(putObjectResult.getRequestId());
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
System.out.println(ciObject.getLocation());
}
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}

示例代码2:下载时识别二维码

GetObjectRequest getObj = new GetObjectRequest(bucketName, key);
// 这里是图片二维码识别参数,具体请参考数据万象 API,这里仅是示例
String cover = "0";
getObj.putCustomQueryParameter("ci-process", "QRcode");
getObj.putCustomQueryParameter("cover", cover);
PicOperations 类用于记录图像操作,其主要成员说明如下:
成员名称
描述
类型
isPicInfo
是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0
int
rules
处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理
List

返回参数说明

CIUploadResult 类用于返回图片处理结果信息,其主要成员说明如下:
成员名称
描述
类型
originalInfo
原图信息
OriginalInfo
processResults
图片处理结果
ProcessResults
OriginalInfo 类用于记录原图信息,其主要成员说明如下:
成员名称
描述
类型
key
原图文件名
String
location
图片路径
String
imageInfo
原图图片信息
ImageInfo
etag
原图 ETag 信息(若处理结果图覆盖原图则为结果图 ETag 信息)
String
ImageInfo 类用于记录原图图片信息,其主要成员说明如下:
成员名称
描述
类型
format
格式
String
width
图片宽度
Integer
height
图片高度
Integer
quality
图片质量
Integer
ave
图片主色调
String
orientation
图片旋转角度
Integer
ProcessResults 类用于记录图片处理结果,其主要成员说明如下:
成员名称
描述
类型
objectList
每一个图片处理结果
List
CIObject 类用于记录一个图片处理结果,其主要成员说明如下:
成员名称
描述
类型
key
文件名
String
location
图片路径
String
format
图片格式
String
width
图片宽度
Integer
height
图片高度
Integer
size
图片大小
Integer
quality
图片质量
Integer
codeStatus
二维码识别结果。0表示未识别到二维码,1表示识别到二维码
Integer
QRcodeInfoList
二维码识别结果,可能有多个
List
QRcodeInfo 用于记录二维码识别结果,其主要成员说明如下:
成员名称
描述
类型
codeUrl
二维码的内容可能识别不出
String
codeLocation
图中识别到的二维码位置坐标
CodeLocation
CodeLocation 用于记录图中识别到的二维码位置坐标 ,其主要成员说明如下:
成员名称
描述
类型
points
二维码坐标点的集合
List