QR码生成图片

public static void toBmp(String str,String transactionID){
  BASE64Decoder decoder = new Decoder.BASE64Decoder();
  byte[] bytes1;
  try {
   bytes1 = decoder.decodeBuffer(str);
   byte[] datas = ZoomWbmp(bytes1, str.length(), 3);
   ByteArrayInputStream bais = new ByteArrayInputStream(datas);
   BufferedImage bi1 = ImageIO.read(bais);
   String path  = AppKeys.UPLOAD_FILE_PATH + File.separator + "tdcode" + File.separator;
   File w2 = new File(path  +transactionID+".bmp");// 可以是jpg,png,gif格式
   ImageIO.write(bi1, "jpg", w2);
   
  } catch (IOException e) {
   AppLogger.getInstance().debugLog("生成二维码异常!", e);
  }
  
 }
 
 
 private static byte[] ZoomWbmp(byte[] Wbmp, int len, int multiple) {
  byte[] ResultWbmp, RowData, multiplePointData;
  byte[] PointData = new byte[8];
  int width = 0;
  int height = 0;
  int step = 0;
  int i, j, k, l;
  width = (int) Wbmp[2];
  height = (int) Wbmp[3];
  step = width / 8;
  ResultWbmp = new byte[(len - 4) * multiple * multiple + 4];
  RowData = new byte[step * multiple];
  multiplePointData = new byte[multiple];
  ResultWbmp[0] = 0x00;
  ResultWbmp[1] = 0x00;
  ResultWbmp[2] = (byte) (width * multiple);
  ResultWbmp[3] = (byte) (height * multiple);
  for (i = 0; i < height; i++) {
   for (j = 0; j < step; j++) {
    PointData[0] = (byte) ((Wbmp[i * step + j + 4] & 0x80) >> 7);
    PointData[1] = (byte) ((Wbmp[i * step + j + 4] & 0x40) >> 6);
    PointData[2] = (byte) ((Wbmp[i * step + j + 4] & 0x20) >> 5);
    PointData[3] = (byte) ((Wbmp[i * step + j + 4] & 0x10) >> 4);
    PointData[4] = (byte) ((Wbmp[i * step + j + 4] & 0x08) >> 3);
    PointData[5] = (byte) ((Wbmp[i * step + j + 4] & 0x04) >> 2);
    PointData[6] = (byte) ((Wbmp[i * step + j + 4] & 0x02) >> 1);
    PointData[7] = (byte) ((Wbmp[i * step + j + 4] & 0x01));
    /* 初始化multiplePointData */
    for (int x = 0; x < multiple; x++) {
     multiplePointData[x] = 0;
    }
    /* 按位复制 */
    for (k = 0; k < 8 * multiple; k++) {
     multiplePointData[(k - k % 8) / 8] |= ((byte) ((PointData[k
       / multiple]) << ((byte) (7 - (k % 8)))));
    }
    /* 复制出整行 */
    for (int x = 0; x < multiple; x++) {
     RowData[j * multiple + x] = multiplePointData[x];
    }
   }
   for (l = 0; l < multiple; l++) {
    for (int x = 0; x < step * multiple; x++) {
     ResultWbmp[4 + (i * multiple + l) * (step * multiple) + x] = RowData[x];
    }
   }
  }
  return ResultWbmp;
 }
时间: 2024-11-02 15:25:42

QR码生成图片的相关文章

【译】QR码教程 - 介绍

二维码 (QR Code)是一种特殊的条形码,它能够将数字.字母.汉字等信息编码.本文将为希望学习QR编码的程序员提供指导.QR码的编码是一个复杂的过程,尤其是生成纠错码这一步骤.本文尝试尽可能简单明了地介绍整个编码过程.本文将假设读者具备基本的编码能力. QR码历史 QR码于1994年由日本公司Denso-Wave发明,该公司是Toyota旗下负责生产自动化部件的子公司.QR码的标准目前已被编入ISO/IEC 18004:2006标准中,无需授权使用. QR码的最小规格为21x21像素,最大规

Atitit zxing二维码qr码识别解析

1.1. qr码识别解析 by zxing1 1.2. 解码lib:qrcode.jar  2 1.3. atitit.二维码生成总结java zxing 2 1.1. qr码识别解析 by zxing /AtiPlatf_ee/src/com/attilax/qrcode/qrcodex.java public static String decode(String imagePath) { String contents = null; MultiFormatReader formatRea

C#利用QrCode.Net生成二维码(Qr码)

现在网上很多应用都是用二维码来分享网址或者其它的信息.尤其在移动领域,二维码更是有很大的应用场景.因为项目的需要,需要在网站中增加一个生成二维码分析网址的功能,在谷歌大幅度抽筋的情况下无奈使用百度.百度N多,找到一些项目,但是可用性不强.(有一个项目是用VS2005开发的,在2010中调试不开.)终于在codeplex上找到一个“神器”,这个“神器”可以很方便的生成二维码,速度那是相当的快,并且可支持中文,遵从MIT协议. QrCode.Net是一个使用C#编写的用于生成二维码图片的类库,使用它

什么是QR码?

什么是QR码? QR码,QR来自英文 "Quick Response" 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码.QR码比普通条码可储存更多资料,亦无需像普通条码般在扫描时需直线对准扫描器.因其不再使用线性扫描的方式工作,而是使用红外光增强的摄像头工作,直接对镜头拍摄到的图像中的QR码图像进行软件识别,所以对反射角度的要求降低了.二维码扫描器甚至能对液晶屏幕上显示的条码进行"扫描"(识别),所以可以直接扫描到手机等屏幕上显示的条码. Q

QR 码的位置检测符

QR码的位置检测符由三个同心正方形叠加而成.分别为: 7*7 modules的黑色正方形: 5*5 modules的白色正方形 : 3*3modules的黑色正方形. 三个用于定位检测的“回”形符号应该优先被编码,好让QR 符号中尽量不出现与其相似的符号. 这三个“回”形符号可以帮助快速的在视野中定位QR码以及确定其方向

QR码与DM码的对比

QR码与DM码的对比 DM无法表现汉字等其他形式,而QR码能用数据压缩方式来表示汉字,仅用13bit即可表示一个汉字,比其他二维条码表示汉字的效率提高了20%.相较而言,DM码信息容量小,应用简单.而QR在汉字处理上更有优势. 在纠错能力上,QR码具有四个不同等级的纠错功能,即使破损即使弯曲或者有高达30%的残缺也能够正确识读.显示了其强大的纠错能力,但DM在编码破损上的表现得更为出色.它只需要读取资料的20%即可精确辨读.对少於255个字码的DM二维条码,错误纠正字码可由资料字码计算得出.对於

QR码简介

QR码(Quick Response Code, 快速响应码)属于矩阵式二维码中的一种,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化. QR码分为两种模式:模式1.模式2:其中,模式1对应旧的标准,目前普遍采用的是模式2,即,新的开放式标准: QR码的基本特征: 1.编码字符集: (1)数字型数据:(数字0--9) (2)字母数字型数据:(数字0--9:大写字母A--Z,9个其它字符:space,$,%,*,+,-,.,/,:); (3)8位字节型数据: (4)日本汉字字符 (5

学习:二维码、QR码、J4L-QRCode、java

开源码 Java 解码器(编码解码)下载:http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip Java QR Code Open Source Decoder(只有编码)下载:http://www.java4less.com/qrcoded.zip J4L-QRCode 1.0 - Java component to create QR Code barcodes http://www.mayacode.com/ 在线

Android 系列 5 7使用Google ZXing条形码扫描器扫描条形码或QR码

5.7使用Google ZXing条形码扫描器扫描条形码或QR码 问题 您希望应用程序能够扫描条形码或QR码(“QR”原本代表“快速反应”). 解 使用Intent访问由Google ZXing条形码扫描器公开的扫描功能. 讨论 Android的一个伟大的功能是它是多么容易利用现有的功能.扫描条形码和QR码是一个很好的例子. Google有一个免费的扫描应用程序,您可以通过意图访问;因此应用程序可以轻松添加扫描功能,开放新的界面,通信和功能的可能性. 此配方中的程序是如何通过Intent访问Go