Java 二维码 Base64转Qrcode

 

相当于扫码二维码获取里面对应的信息。。。

https://blog.csdn.net/kangcool_sn/article/details/85096386

 

 

package utils;


import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.exception.DecodingFailedException;
import sun.misc.BASE64Decoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;


/**
 * Created by kzx on 2016-11-22.
 */
public class Base64ToQrcode {


  
    /**
     * 解析二维码(QRCode)
     *
     * @param imgPath 图片路径
     * @return
     */
    public String decoderQRCode(String imgPath) {
        // QRCode 二维码图片的文件
        File imageFile = new File(imgPath);
        BufferedImage bufImg = null;
        String content = null;
        try {
            bufImg = ImageIO.read(imageFile);
            QRCodeDecoder decoder = new QRCodeDecoder();
            content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
            e.printStackTrace();
        } catch (DecodingFailedException dfe) {
            System.out.println("Error: " + dfe.getMessage());
            dfe.printStackTrace();
        }
        return content;
    }


    /**
     * 解析二维码(QRCode)
     *
     * @param base64字符串
     * @return
     */
    public String decoderQRCode2(String base64Str) {
        BufferedImage bufImg = null;
        String content = null;
        try {
        byte[] bytes =this.base64Stream(base64Str);
        InputStream in_withcode =  new ByteArrayInputStream(bytes); 
            bufImg = ImageIO.read(in_withcode);
            QRCodeDecoder decoder = new QRCodeDecoder();
            content = new String(decoder.decode(new TwoDimensionCodeImage(bufImg)), "utf-8");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
            e.printStackTrace();
        } catch (DecodingFailedException dfe) {
            System.out.println("Error: " + dfe.getMessage());
            dfe.printStackTrace();
        }
        return content;
    }
 
    public byte[] base64Stream(String imgStr){
    
    BASE64Decoder decoder = new BASE64Decoder();
    byte[] bytes = null;
        try {
            // Base64解码
            bytes = decoder.decodeBuffer(imgStr);
            for (int i = 0; i < bytes.length; ++i) {
                if (bytes[i] < 0) {// 调整异常数据
                    bytes[i] += 256;
                }
             }
            }catch(Exception e){
            
            }
return bytes;
    
    }
    public static void main(String[] args) {
        String str="iVBORw0KGgoAAAANSUhEUgAAAJQAAACUCAIAAAD6XpeDAAADA0lEQVR42u3aW3ICIRAF0Ox/02YDsaLDvQ06Zz4tMyCHFP3g56fwPBaeZ+955fN357Dyu9pjbXvgwYMH7yZ4jUVvIE3OcwVjdFx48ODBg3cZLzW5VybdCFIa465siMY6w4MHDx68c/FSeedk/treTPDgwYMH7zvx2tip4KWxOeDBgwcP3rl47cN8JUhpF8dTxeKP7yrAgwcP3hfjTQYLd/786AcSPHjwvhjvUX5SRedUgbgdBE0+8ODBgwfv+tp+YhN1ZXHbxeXR9YQHDx48eP+u52Tx94RgZGWhTwt24MGDBw9eBi92MWbTpaBULffoC1rw4MGDB+8yXuNATk26Df+JBXd48ODBg5fBaye/sUP7gOBlV4ADDx48ePDySfoJjdClAm4owJksTL80B3jw4MGDd7nv2A5YUot1QnFgMkmPJezw4MGDB+/yi9qJ7eThn9oE2xrU8ODBgwfv33c2Cr67gpp2gbjxnW23x+DBgwfvhniNgGUSfrLA3Q6yKv+F8ODBgwfvz2Zsu7A72fhNBU2TAdTSfxs8ePDgwRvDmywWNwrH7UCmXpiGBw8ePHhxvF0F2cmGZxum0lWABw8ePHjxfl5qoo0iQCURLmBv6yrAgwcPHrxji7OpDdFO0htze3ssePDgwYN3eazGwTuZ2DYuPrXxYmPBgwcPHrzLhelUMNJYiMnG8q7C9NPvwIMHDx68y+9MXZhJJf6pg32pyVkOQGLA8ODBgwcvgrer0doIEBobtD1W/QISPHjw4MGLJ92p4GWygZy6dFTvKsCDBw8evPgFpF3N0nZCvSvBj70THjx48OCNHdSTC5GaQ2ojThblX+qkw4MHDx689H2fpeZk+2/bi97erKNg8ODBg3dDvPakG5vghICrEXSMJuzw4MGDd3O8yQChsUBHdwAaY8GDBw8evKPw2sl+OxiZbNjGbo/BgwcPHrzteO3i9WSC3yh21yMoePDgwYMX/wGTgUAKsl0EqFyUggcPHjx42y8gNb7TCKzagclpxW548ODBuyHeL9xbl2J4ZXhhAAAAAElFTxSuQxCC";
        Base64ToQrcode handler = new Base64ToQrcode();
        try {
        //InputStream   in_withcode   =   new   ByteArrayInputStream(str.getBytes("UTF-8"));
        ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(str.getBytes());
        //byte[] bytes =handler.base64Stream(str);
        //InputStream in_withcode =  new ByteArrayInputStream(bytes);   
        
        String str1= handler.decoderQRCode2(str);
        System.out.println(str1);
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值