概述
我们的这个第三方平台目前使用的是七牛云
pom.xml:
<!-- 二维码生成工具 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.0.0</version>
</dependency>
<!-- 七牛云 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.18</version>
</dependency>
生成二维码并且上传:
package org.ewhl.common.utils;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
public class QRCodeUtil {
//二维码颜色
private static final int BLACK = 0xFF000000;
//二维码颜色
private static final int WHITE = 0xFFFFFFFF;
/*public static void main(String[] args) throws Exception {
zxingCodeCreate("http://www.baidu.com", 300, 300, "D:/qrcode.jpg", "jpg");
zxingCodeAnalyze("D:/qrcode.jpg");
}*/
/** 生成二维码
* @param text 二维码内容
* @param width 二维码宽
* @param height 二维码高
* @param outPutPath 二维码生成保存路径
* @param imageType 二维码生成格式
*/
public static Map<String,Object> zxingCodeCreate(String text, int width, int height){
Map<EncodeHintType, String> his = new HashMap<EncodeHintType, String>();
//设置编码字符集
his.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
//1、生成二维码
BitMatrix encode = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, his);
//2、获取二维码宽高
int codeWidth = encode.getWidth();
int codeHeight = encode.getHeight();
//3、将二维码放入缓冲流
BufferedImage image = new BufferedImage(codeWidth, codeHeight, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < codeWidth; i++) {
for (int j = 0; j < codeHeight; j++) {
//4、循环将二维码内容定入图片
image.setRGB(i, j, encode.get(i, j) ? BLACK : WHITE);
}
}
// 创建一个输出流
ByteArrayOutputStream os = new ByteArrayOutputStream();
//将图片写出到指定位置(复制图片)
ImageIO.write(image, "jpg", os);
// 创建输入流获取存放输出流信息
// toByteArray(): 创建一个新分配的字节数组,数组的大小和当前输出流的大小,内容是当前输出流的拷贝。
InputStream is = new ByteArrayInputStream(os.toByteArray());
// 定义一个 Map 集合 存放返回值
// UploadUtils.upload:调用七牛云的方法(因为返回值是Map类型的,所以用Map来存放)
Map<String,Object> retMap = UploadUtils.upload(is);
return retMap;
/*//存储到本地
File outPutImage = new File(outPutPath);
//如果图片不存在创建图片
if(!outPutImage.exists())
//outPutImage.createNewFile();
//5、将二维码写入图片
ImageIO.write(image, imageType, outPutImage); */
} catch (WriterException e) {
e.printStackTrace();
System.out.println("二维码生成失败");
} catch (IOException e) {
e.printStackTrace();
System.out.println("生成二维码图片失败");
}
return null;
}
/** 二维码解析
* @param analyzePath 二维码路径
* @return
* @throws IOException
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static String zxingCodeAnalyze(String analyzePath) throws Exception{
MultiFormatReader formatReader = new MultiFormatReader();
String resultStr = null;
try {
File file = new File(analyzePath);
if (!file.exists())
{
return "二维码不存在";
}
BufferedImage image = ImageIO.read(file);
LuminanceSource source = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
Result result = formatReader.decode(binaryBitmap, hints);
resultStr = result.getText();
} catch (NotFoundException e) {
e.printStackTrace();
}
System.out.println(resultStr);
return resultStr;
}
}
七牛云代码:
package org.ewhl.common.utils;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
public class UploadUtils {
public static Map<String,Object> upload(InputStream stream) {
Map<String,Object> retMap = new HashMap<String,Object>();
// 构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
// ...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
// ...生成上传凭证,然后准备上传
String accessKey = "凭证码";
String secretKey = "凭证码";
String bucket = "wdlife";
// 默认不指定key的情况下,以文件内容的hash值作为文件名
String key = UUID.randomUUID().toString().replaceAll("\-", "");
try {
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(stream, key, upToken, null, null);
// 解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
retMap.put("url","上传的连接"+putRet.key);
retMap.put("hash",putRet.hash);
/*System.out.println(putRet.key);
System.out.println(putRet.hash);*/
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
ex2.printStackTrace();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return retMap;
}
}
因为本身自己也是小白,然后第一次写这种上传,如有不对的地方,请留言指教,谢谢!!
最后
以上就是含糊缘分为你收集整理的Java 生成二维码上传第三方平台(详解)的全部内容,希望文章能够帮你解决Java 生成二维码上传第三方平台(详解)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复