Qrcode 二维码


  1. package cn.com.do1.wechat.common;
  2. import java.awt.Color;
  3. import java.awt.Graphics2D;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import javax.imageio.ImageIO;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.swetake.util.Qrcode;
  9. /*
  10. * java生成二维码工具类扫一扫
  11. */
  12. public class QrcodeUtil {
  13. /**
  14. * 生成二维码图像
  15. *
  16. * @author sss
  17. * @param content
  18. * 需要生成二维码的文字或者其他内容
  19. * 生成二维码图像保存的地址
  20. * @return
  21. */
  22. public static void QrcodeImg(String content, HttpServletResponse response) {
  23. int width = 160;
  24. int height = 160;
  25. // 实例化Qrcode
  26. try {
  27. Qrcode qrcode = new Qrcode();
  28. // 设置二维码排错率,可以选项L(%7),M(%15),Q(%25),H(%30)
  29. qrcode.setQrcodeErrorCorrect('M');
  30. qrcode.setQrcodeEncodeMode('B');
  31. // 设置二维码的尺寸,取值范围(1-40)
  32. qrcode.setQrcodeVersion(8);
  33. // 设置图片尺寸
  34. BufferedImage bufImg = new BufferedImage(width, height,
  35. BufferedImage.TYPE_INT_RGB);
  36. // 绘制二维码图片
  37. Graphics2D gs = bufImg.createGraphics();
  38. // 设置二维码的背景颜色
  39. gs.setBackground(Color.WHITE);
  40. // 创建二维码的矩形区域
  41. gs.clearRect(0, 0, width, height);
  42. // 设置二维码的颜色
  43. gs.setColor(Color.BLACK);
  44. //设置偏移量 不设置可能导致解析出错
  45. int pixoff = 2;
  46. // 获取内容的字节数组,设置编码集
  47. byte[] contentBytes = new byte[2048];
  48. contentBytes = content.getBytes("utf-8");
  49. if (contentBytes.length > 0 && contentBytes.length < 1000) {
  50. boolean[][] codeOut = qrcode.calQrcode(contentBytes);
  51. for (int i = 0; i < codeOut.length; i++) {
  52. for (int j = 0; j < codeOut.length; j++) {
  53. if (codeOut[j][i]) {
  54. gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
  55. }
  56. }
  57. }
  58. } else {
  59. throw new RuntimeException("输入的内容超出了二维码的最大限制值");
  60. }
  61. gs.dispose();
  62. bufImg.flush();
  63. //生成二维码QRCode图片 (以流的方式输出。)
  64. ImageIO.write(bufImg, "jpg", response.getOutputStream());
  65. // // 生成二维码图片
  66. // File imgFile = new File(imgPath);
  67. // ImageIO.write(bufImg, "png", imgFile);
  68. // System.out.println("恭喜您,二维码生成成功");
  69. } catch (Exception e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }

注:加大二维码的图片Vesion可以容纳更多的字节 

                int width = 160;
int height = 160;
// 实例化Qrcode
try {
Qrcode qrcode = new Qrcode();
// 设置二维码排错率,可以选项L(%7),M(%15),Q(%25),H(%30)
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
// 设置二维码的尺寸,取值范围(1-40)
qrcode.setQrcodeVersion(8);

### 关于 QRCode 二维码生成与解析技术 QRCode 是一种用于生成和解析二维码的技术工具,广泛应用于多个编程语言环境。以下是关于该主题的具体信息: #### 1. **QRCode 的定义与特点** QRCode 是一个基于 Java 实现的轻量级二维码生成器[^1]。它的主要特点是易于使用、性能优越以及支持多种数据类型的编码与解码操作。通过此库,开发人员能够轻松实现文本、URL 或文件路径等内容向二维码形式的转换。 #### 2. **API 设计与功能** QRCode 提供了一套简洁明了的 API 接口,便于开发者在项目中集成二维码生成功能。例如,在生成二维码时可以通过如下代码完成: ```java QRCodeGenerator generator = new QRCodeGenerator(); Bitmap bitmap = generator.generate("Hello, GitCode!"); ``` 上述代码展示了如何利用 `QRCodeGenerator` 类创建一条包含指定消息 (`"Hello, GitCode!"`) 的二维码图片对象 `bitmap`。 对于二维码的解析过程,则可通过实例化 `QRCodeReader` 对象来执行反向操作——即从已有的二维码图像提取其中存储的信息: ```java QRCodeReader reader = new QRCodeReader(); String content = reader.decode(bitmap); ``` #### 3. **与其他开源项目的对比** 除了 QRCode 外,还有其他类似的开源解决方案可供选择,比如 Google 开发的 ZXing 库。然而需要注意的是,某些情况下特定版本可能存在问题;例如曾有人报告过使用 ZXing 创建出来的二维码无法被移动设备正常读取的情况[^2]。因此当遇到此类难题时可考虑切换至更稳定的替代品如 qrcode 或 chillerlan/php-qrcode (针对 PHP 用户)[^3]。 #### 4. **适用范围及注意事项** 由于其跨平台特性加上良好的文档支持,QRCode 非常适合那些希望迅速添加基本条形码处理能力而不愿投入过多时间研究复杂算法细节的应用程序开发者们。不过值得注意的一点是在正式部署前务必确认所选方案完全满足业务需求并遵循相应的法律条款和技术标准规定[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值