精华内容
下载资源
问答
  • 今天项目中刚好用到了二维码转化,在这里分享一个生产二维码并将其转为base64二维码工具类 需要的jar包 <!-- 生成二维码 --> <dependency> <groupId>com.google.zxing</groupId> &...

    今天项目中刚好用到了二维码转化,在这里分享一个生产二维码并将其转为base64的二维码工具类

    需要的jar包

    <!-- 生成二维码 --> 
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.3</version>
        </dependency>

    直接上代码:

    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.WriterException;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import com.google.zxing.qrcode.encoder.ByteMatrix;
    import com.google.zxing.qrcode.encoder.Encoder;
    import com.google.zxing.qrcode.encoder.QRCode;
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.util.Base64;
    import java.util.Hashtable;
    import java.util.Map;
    
    /**
     * @description: 二维码工具类
     * @author: WangZhiJun
     * @create: 2019-08-15 11:29
     **/
    public class BarCodeUtils {
    
    
        /** 获取图片的base64
         * @param bufferedImage bufferedImage
         * @return String
         */
        public static String getImage2Base64String(BufferedImage bufferedImage) {
            if (bufferedImage == null) {
                return null;
            } else {
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
    
                try {
                    ImageIO.write(bufferedImage, "png", bos);
                    byte[] imageBytes = bos.toByteArray();
                    return Base64.getEncoder().encodeToString(imageBytes);
                } catch (Exception var13) {
                    var13.printStackTrace();
                } finally {
                    try {
                        bos.close();
                    } catch (Exception var12) {
                        var12.printStackTrace();
                    }
    
                }
    
                return null;
            }
        }
    
        public static BufferedImage generateBarcodeWithoutWhite(String content, Color color) {
            return generateBarcodeWithoutWhite(content, 100, 100, color);
        }
    
        /**
         * @param content 二维码内容
         * @param width 二维码图片宽
         * @param height 二维码图片高
         * @param color 二维码图片颜色
         * @return  BufferedImage
         */
        private static BufferedImage generateBarcodeWithoutWhite(String content, int width, int height, Color color) {
            try {
                Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
                hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
                hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
                hints.put(EncodeHintType.MARGIN, 0);
                BitMatrix matrix = encode(content, BarcodeFormat.QR_CODE, width, height, hints);
                width = matrix.getWidth();
                height = matrix.getHeight();
                if (color == null) {
                    color = Color.BLACK;
                }
    
                int[] pixels = new int[width * height];
    
                for(int y = 0; y < height; ++y) {
                    for(int x = 0; x < width; ++x) {
                        if (matrix.get(x, y)) {
                            pixels[y * width + x] = color.getRGB();
                        } else {
                            pixels[y * width + x] = Color.WHITE.getRGB();
                        }
                    }
                }
    
                BufferedImage image = new BufferedImage(width, height, 1);
                image.getRaster().setDataElements(0, 0, width, height, pixels);
                return image;
            } catch (Exception var9) {
                return null;
            }
        }
    
        private static BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) throws WriterException {
            if (contents.isEmpty()) {
                throw new IllegalArgumentException("Found empty contents");
            } else if (format != BarcodeFormat.QR_CODE) {
                throw new IllegalArgumentException("Can only encode QR_CODE, but got ".concat(String.valueOf(format)));
            } else if (width >= 0 && height >= 0) {
                ErrorCorrectionLevel errorCorrectionLevel = ErrorCorrectionLevel.L;
                int quietZone = 4;
                if (hints != null) {
                    if (hints.containsKey(EncodeHintType.ERROR_CORRECTION)) {
                        errorCorrectionLevel = ErrorCorrectionLevel.valueOf(hints.get(EncodeHintType.ERROR_CORRECTION).toString());
                    }
    
                    if (hints.containsKey(EncodeHintType.MARGIN)) {
                        quietZone = Integer.parseInt(hints.get(EncodeHintType.MARGIN).toString());
                    }
                }
    
                return renderResult(Encoder.encode(contents, errorCorrectionLevel, hints), width, height, quietZone);
            } else {
                throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
            }
        }
    
        /** 渲染结果
         * @param code 二维码
         * @param width 二维码宽
         * @param height 二维码高
         * @param quietZone
         * @return BitMatrix
         */
        private static BitMatrix renderResult(QRCode code, int width, int height, int quietZone) {
            ByteMatrix input = code.getMatrix();
            if (input == null) {
                throw new IllegalStateException();
            } else {
                int inputWidth = input.getWidth();
                int inputHeight = input.getHeight();
                int qrWidth = inputWidth + quietZone * 2;
                int qrHeight = inputHeight + quietZone * 2;
                int minSize = Math.min(width, height);
                int scale = calculateScale(qrWidth, minSize);
                int outputWidth;
                int tmpValue;
                if (scale > 0) {
                    outputWidth = (minSize - qrWidth * scale) / 4 * quietZone;
                    tmpValue = qrWidth * scale + outputWidth;
                    if (width == height) {
                        width = tmpValue;
                        height = tmpValue;
                    } else if (width > height) {
                        width = width * tmpValue / height;
                        height = tmpValue;
                    } else {
                        height = height * tmpValue / width;
                        width = tmpValue;
                    }
                }
    
                outputWidth = Math.max(width, qrWidth);
                tmpValue = Math.max(height, qrHeight);
                int multiple = Math.min(outputWidth / qrWidth, tmpValue / qrHeight);
                int leftPadding = (outputWidth - inputWidth * multiple) / 2;
                int topPadding = (tmpValue - inputHeight * multiple) / 2;
                BitMatrix output = new BitMatrix(outputWidth, tmpValue);
                int inputY = 0;
    
                for(int outputY = topPadding; inputY < inputHeight; outputY += multiple) {
                    int inputX = 0;
    
                    for(int outputX = leftPadding; inputX < inputWidth; outputX += multiple) {
                        if (input.get(inputX, inputY) == 1) {
                            output.setRegion(outputX, outputY, multiple, multiple);
                        }
    
                        ++inputX;
                    }
    
                    ++inputY;
                }
    
                return output;
            }
        }
    
        /** 计算比例
         * @param qrCodeSize 二维码大小
         * @param expectSize 期望大小
         * @return int
         */
        private static int calculateScale(int qrCodeSize, int expectSize) {
            if (qrCodeSize >= expectSize) {
                return 0;
            } else {
                int scale = expectSize / qrCodeSize;
                int abs = expectSize - scale * qrCodeSize;
                return (double)abs < (double)expectSize * 0.02D ? 0 : scale;
            }
        }
    }

    测试:

    public static void main(String[] args) {
            String base64String = BarCodeUtils.getImage2Base64String(BarCodeUtils.generateBarcodeWithoutWhite("Hello CSDN!", Color.BLACK));
            System.out.println(base64String);
        }

    结果

    iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABgUlEQVR42u3aSw7CMAwFwN7/0rCFXav4OQ5MllVonUFyPs51Bdrro93ps9L/6XvGNViwYJUMciW4BNad9995XoYOCxasUViJoKv6JP68x/1hwYL1k1idA4AFCxasSqz0ghYWLFj/i5UecNV3n8Zz5KkDLFiwthQsdj0/sroDCxastuS6ssGeNlF8xQALFqyxWMcUO4tydPzHsGDBKsFKFz5Xgk5MCGXfhQUL1hasXZc7Og8gyw4sYcGCNRZrF+40RFiwYM3CSm+wOxNz1eIWFixYZ2BN2EivJOBWXFiwYI3C2nXYtqvAEa/0wIIFK4pVldQ739k5mcCCBWsuVmeg8QsdVRMdLFiwtmC9wi292U4UVh9vnmHBgtWG1Zkgq4ogiUX1tavBggWr/H5D5+WLqgO8qu9GZkZYsGCVYyXO7BNFjdGnDrBgwToaK7FATSTysoIFLFiwfgYrvRCFBQvWf2GdspFe+QPKLobAggVrC1brRrRoYFWFkm2VHliwYD2J4Q0jCJp5Y40h4wAAAABJRU5ErkJggg==

     

    在相应的base64转图片网站转化对应的图片文件为

    或者随便新建一个页面,添加一个<img src="data:image/png;base64,base64数据"/>,将生成的base64数据替换掉红色部分就可以显示二维码了!

    测试效果可以去我的个人主页进行测试:模拟支付 

    展开全文
  • 二维码转化BASE64字符串存储
  • 支持maven引入依赖生成二维码,自带工具类,支持生成二维码到本地,也可以转成base64字符串(前端轻松解析),写好了强大的工具类,总有一个适合你的。。。。。
  • 生成二维码目前的技术目前有两大类:QRCode 和 Zxing QRCode 是日本原生的二维码生成技术,目前只有 0.5Beta 版且不能通过maven等构件工具引入 Zxing 是google 对二维码生成技术的包装,提供给Android系统用,不过...

    前置知识

    生成二维码目前的技术目前有两大类:QRCode 和 Zxing

    • QRCode 是日本原生的二维码生成技术,目前只有 0.5Beta 版且不能通过maven等构件工具引入
    • Zxing 是google 对二维码生成技术的包装,提供给Android系统用,不过也可以取其中部分模块共后端开发使用

    对上面的技术了解后决定使用 Zxing 作为生产技术进行开发,下面为简单的例子,具体参数的使用可以百度


    实现功能

    前端传入参数后台根据参数生成二维码同时转换成 String 类型的Base64 编码返回给前端


    开发工具及技术

    IntelliJ IDEA 2017.3.5

    构建工具 Maven

    框架 Spring Boot

    实现步骤


    1.创建一个spring boot 项目

    2. 选择spring Initializr 根据下图参数及箭头进行操作

    3. 配置Maven 参数

    4. 选择spring boot 的基础依赖包,目前只需要web所以添加一个web包以及就行,后面需要手动添加zxing的依赖

    5. 项目提示是否将当前项目作为Maven项目,选择 Add as Maven Project ,然后稍等一会等待maven 拉取依赖

    6. 添加 zxing 的依赖,Maven会检测到并在此拉取依赖

    7. 创建controller和service文件夹并写 Service 和 Controller 代码

    写service 需要注意下图中下面这段话

    原生转码前面没有 data:image/png;base64 这些字段,返回给前端是无法被解析,可以让前端加,也可以在下面加上

    写controller

    8. 启动服务

    9. 打开浏览器进行查看

    10. 将该数据放到 http://imgbase64.duoshitong.com/ 或类似在线的Base64转图片的网站进行图片转换

    源码地址为(可以直接拉取到本地运行起来)

    https://github.com/kioo/qrcodeDemo

    展开全文
  • node 生成二维码 qrcode base64

    千次阅读 2019-03-26 15:44:21
    base64,' + Buffer ( url ) . toString ( 'base64' ) ) } ) var qr = require ( 'qr-image' ) ; var qr_svg = qr . imageSync ( 'I love QR!' , { type : 'svg' } ) ; console . log ...
    • qr-image
    • qrcode
    var QRCode = require('qrcode')
    
    QRCode.toString('I am a pony!I am a pony!I am a pony!I am a pony!',{type: 'svg'}, function (err, url) {
      console.log(url)
      console.log('data:image/svg+xml;base64,' + Buffer(url).toString('base64'))
    })
    
    
    var qr = require('qr-image');
    
    var qr_svg = qr.imageSync('I love QR!', { type: 'svg' });
    console.log(qr_svg);
    console.log('-----------------');
    console.log(Buffer(qr_svg).toString('base64'));
    
    
    展开全文
  • 微信小程序剪切头像功能,二维码功能,页面只有一个,方便做数据处理,并进行了图片压缩转换,最后转为base64,直接post到服务器处理即可 用到的几个关键api wx.canvasToTempFilePath wx.chooseImage wx....
  • QrcodeUtils.java 源码: package com.pay.utils; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import ...import sun.misc.BASE64Encoder; import javax.

    QrcodeUtils.java 源码:

    package com.pay.utils;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.common.BitMatrix;
    import sun.misc.BASE64Encoder;
    
    import javax.imageio.ImageIO;
    import javax.swing.filechooser.FileSystemView;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    
    public class QrCodeUtil {
    
        public static void main(String[] args) {
            String url = "http://www.baidu.com";
            String path = FileSystemView.getFileSystemView().getHomeDirectory() +             File.separator + "testQrcode";
            String fileName = "temp.jpg";
            createQrCode(url, path, fileName);
        }
    
        public static String createQrCode(String url) {
            try {
                Map<EncodeHintType, String> hints = new HashMap<>();
                hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
                BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 400, 400, hints);
    
    // 二维码图片下载至本地
    //            File file = new File(path, fileName);
    //            if (file.exists() || ((file.getParentFile().exists() || file.getParentFile().mkdirs()) && file.createNewFile())) {
    //                writeToFile(bitMatrix, "jpg", file);
    //                System.out.println("搞定:" + file);
    //            }
    
                // 1、读取文件转换为字节数组
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                BufferedImage image = toBufferedImage(bitMatrix);
                //转换成png格式的IO流
                ImageIO.write(image, "png", out);
                byte[] bytes = out.toByteArray();
    
                // 2、将字节数组转为二进制
                BASE64Encoder encoder = new BASE64Encoder();
                String binary = encoder.encodeBuffer(bytes).trim();
                System.out.println(binary);
                return binary;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
            BufferedImage image = toBufferedImage(matrix);
            if (!ImageIO.write(image, format, file)) {
                throw new IOException("Could not write an image of format " + format + " to " + file);
            }
        }
    
        static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {
            BufferedImage image = toBufferedImage(matrix);
            if (!ImageIO.write(image, format, stream)) {
                throw new IOException("Could not write an image of format " + format);
            }
        }
    
        private static final int BLACK = 0xFF000000;
        private static final int WHITE = 0xFFFFFFFF;
    
        private static BufferedImage toBufferedImage(BitMatrix matrix) {
            int width = matrix.getWidth();
            int height = matrix.getHeight();
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
                }
            }
            return image;
        }
    }
    

    pom引入:

            <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.3.0</version>
            </dependency>

    前端页面显示:

    <img src="data:image/png;base64,' + value + '" width="70px" height="70px"></img>

     

    展开全文
  • 之前用sun.misc.BASE64Encoder这个包会存在这个问题,上网查了下说是每隔72个字符就会加上换行符,果断换了一个包就可以解决了 换成org.apache.commons.codec.binary.Base64用里面的byte[] d = Base64.encodeBase64...
  • 一、base64 1、base64图片 2、base64图片转换为本地图片 可参考https://blog.csdn.net/bocongbo/article/details/84954567这篇博客 二、下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求,返回文件的本地...
  • java生成二维码_java将二维码转换成base64
  • 本篇文章将介绍Java使用Zxing实现生成二维码图片和生成二维码Base64,其实二维码的展示主要包括两各方面:1.直接生成图片 2.将二维码转为字节数组,然后在html页面显示。生成二维码的功能主要是依赖Google的Zxing包...
  • 压缩图片:https://tinypng.com/ 生成二维码供移动端扫描:https://cli.im/text?ba52154e5d2e4eba465ddb6d84ebe115草料二维码
  • 为PDF文件生成二维码 @GetMapping("createQrcodeOfPdf") public void createQrcodeOfPdf() throws IOException, DocumentException { //生成PDF文件的路径 String path = "/Users/mudisheng/Desktop/...
  • 图片转为Base64后,传给其他服务,验证Base64出错图片转为Base64后,传给其他服务,验证Base64出错问题描述解决方法 图片转为Base64后,传给其他服务,验证Base64出错 问题描述 图片转为Base64编码后,传给其他服务...
  • 本篇文章将介绍Java使用Zxing和commons-codec实现生成二维码图片和二维码Base64。 说明:针对Maven工程和普通的java工程,jar包的引入方式不同,此处只介绍Maven工程jar引入方式。 一、在pom.xml文件中添加依赖 ...
  • 1.Java生成二维码示例 2.图片保存到本地或生成Base64编码 3.Base64编码生成图片
  •   需在nuget 添加此dll ...///content字符串 ...public static string GetQRCode...base64," + Convert.ToBase64String(arr);  return base64Str; } 转载于:https://www.cnblogs.com/MasterLin/p/9869073.html
  • 二维码图片转base64格式给前端显示

    千次阅读 2018-06-04 14:14:04
    二维码图片转base64 格式给前端显示&lt;img id="QrCode" src="data:image/jgp;base64,@ViewBag.Qrcodurl" /&gt; //初始化二维码生成工具 QRCodeEncoder qrCodeEncoder = new ...
  • Java 二维码 Base64转Qrcode

    千次阅读 2016-12-02 12:45:23
    相当于扫码二维码获取里面对应的信息。。。 https://blog.csdn.net/kangcool_sn/article/details/85096386     package utils; import jp.sourceforge.qrcode.QRCodeDecoder; import jp.sourceforge.qrcode...
  • Vue 设置图片不转为base64

    千次阅读 2019-03-25 12:04:47
    在使用 Vue.js 框架开发项目时,vue-cli创建的webpack模板默认会将10K以下的图片和字体文件转为base64。 好处:带来了更快的渲染,不会因为页面切换时还有加载图片的延迟感。 坏处:打包后的CSS,JS文件非常大,...
  • vue qrcode生成二维码base64 图片

    千次阅读 2020-08-11 16:54:02
    在项目中需要使用链接生成二维码合成一张海报,二维码图片是一张base64的图片格式 1.引入 qrcode import QRCode from "qrcode"; 2.html 书写 <div class="qrcode_box"> <img class="qrcode_canvas" ref=...
  • base64二维码

    2018-06-06 10:57:16
    根据自己需要的内容,使用base64技术进行加密后,再转二维码显示
  • 通过后端接口传过来的base64编码进行处理 const fsm = wx.getFileSystemManager() function base64src(buffer, cb) { const time = new Date().getTime() //自定义文件名 const filePath = ${wx.env.USER_DATA_PATH}...
  • Java 生成二维码(及base64转换)

    千次阅读 2020-07-23 16:58:48
    Java 生成二维码(及base64转换) 本文主要是讲解java生成二维码且以base64的形式返回, 生成二维码的功能主要是依赖Google的zxing包 。 导入zxing依赖 以maven为例,在pom文件中导入依赖 <dependency> <...
  • java生成二维码到文件,java生成二维码转成BASE64
  • 二维码图片转换成BASE64字符串
  • 亲测可以显示 Page({ data: { qrCodeUrl: null }, onLoad: function (options) { wx.hideShareMenu() // 禁止页面转发 ... // 获取二维码 getQrCode() { wx.request({ url: '', data: {}, header: { 'c

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,245
精华内容 498
关键字:

二维码转为base64