谷歌zxing生成/读取二维码-------删除二维码白边

Android 彻底解决zxing生成条码两边空白问题 解决源码 不耽误大家时间,直接上解决代码 依赖: implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7' 解决方法 /** * 参考OneDimensionalCodeWriter源码中对于条码边距的计算 * @param width 条码宽度 * @param contents 条码内容 */ private int getNewWidth(int width, String content 阅读详情

 

1、借助第三方jar,如zxing

zxing:https://github.com/zxing


 
  1. package com.han.utils;

  2.  
  3. import java.awt.image.BufferedImage;

  4. import java.io.File;

  5. import java.io.IOException;

  6. import java.nio.file.Path;

  7. import java.util.HashMap;

  8. import java.util.Map;

  9.  
  10. import javax.imageio.ImageIO;

  11.  
  12. import com.google.zxing.BarcodeFormat;

  13. import com.google.zxing.BinaryBitmap;

  14. import com.google.zxing.EncodeHintType;

  15. import com.google.zxing.MultiFormatReader;

  16. import com.google.zxing.MultiFormatWriter;

  17. import com.google.zxing.Result;

  18. import com.google.zxing.client.j2se.BufferedImageLuminanceSource;

  19. import com.google.zxing.client.j2se.MatrixToImageWriter;

  20. import com.google.zxing.common.BitMatrix;

  21. import com.google.zxing.common.HybridBinarizer;

  22. import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

  23.  
  24. public class ZxingQrCodeUtil {

  25. /*

  26. * 定义二维码的宽高

  27. */

  28. private static int WIDTH=300;

  29. private static int HEIGHT=300;

  30. private static String FORMAT="png";//二维码格式

  31. //生成二维码

  32. public static void createZxingqrCode(String content){

  33. //定义二维码参数

  34. Map hints=new HashMap();

  35. hints.put(EncodeHintType.CHARACTER_SET, "utf-8");//设置编码

  36. hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//设置容错等级

  37. hints.put(EncodeHintType.MARGIN, 2);//设置边距默认是5

  38.  
  39. try {

  40. BitMatrix bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);

  41. bitMatrix = deleteWhite(bitMatrix);//删除白边  方法在下面

  42. Path path = new File("E:\\qr.png").toPath();

  43. MatrixToImageWriter.writeToPath(bitMatrix, FORMAT, path);//写到指定路径下

  44.  
  45. } catch (Exception e) {

  46. e.printStackTrace();

  47. }

  48.  
  49. }

  50.  

  51. /**删除二维码的白边*/

  52. private static BitMatrix deleteWhite(BitMatrix matrix) {
            int[] rec = matrix.getEnclosingRectangle();
            int resWidth = rec[2] + 1;
            int resHeight = rec[3] + 1;

            BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
            resMatrix.clear();
            for (int i = 0; i < resWidth; i++) {
                for (int j = 0; j < resHeight; j++) {
                    if (matrix.get(i + rec[0], j + rec[1]))
                        resMatrix.set(i, j);
                }
            }
            return resMatrix;
        }

  53.  

  54.  

  55. //读取二维码

  56. public static void readZxingQrCode(){

  57. MultiFormatReader reader = new MultiFormatReader();

  58. File file = new File("E:\\qr.png");

  59. try {

  60. BufferedImage image = ImageIO.read(file);

  61. BinaryBitmap binaryBitmap=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));

  62. Map hints=new HashMap();

  63. hints.put(EncodeHintType.CHARACTER_SET, "utf-8");//设置编码

  64. Result result= reader.decode(binaryBitmap,hints);

  65. System.out.println("解析结果:"+result.toString());

  66. System.out.println("二维码格式:"+result.getBarcodeFormat());

  67. System.out.println("二维码文本内容:"+result.getText());

  68. } catch (Exception e) {

  69. // TODO Auto-generated catch block

  70. e.printStackTrace();

  71. }

  72. }

  73. }

ZXing 库生成二维码有白边且大小不一致问题 import com// 关键参数说明: // dataRegionSize - 数据区域标准尺寸(不含白边) // marginSize - 四周边距宽度 // marginColor - 边距区域颜色 public static BufferedImage generateQRCode(String content , int dataRegionSize , int marginSize , Color marginColor) throws Exception { 阅读详情

相关推荐

Google zxing实现二维码扫描完美解决方案

最近因项目需求,需要在App中集成二维码扫描的功能。网上找了很多资料,最后决定使用Google的zxing来实现。实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程分享给大家。 我会分为两步来和大家分享: (1)项目中如何集成zxing (2)如何修取景框的样式 (3)总结填坑 1.项目中集成zxing 在项目中集成zxing,网上有很多的教程也说的

... 6万+

去除zxing生成二维码的白色边距

最近在做一些期刊类的素材时使用到了生成二维码的功能,实际在8-9年以前就实践过二维码的生成,当时做了一个在线生成的示例,可以自定义宽度、高度、内容、logo小图标,本次拿来使用时发现以前的二维码确实还有一个白边问题存在,时隔多年发现这种问题搜索起来一大片,实际能起到作用的却是非常少,所以本次记录一下解决的方式,采用修改源码的方式,将源代码拷贝至项目中(保持包路径名称与jar中一致),利用IDE优先加载项目中的class的特点来覆盖jar中class文件的特性,起到更改源码生效的目的。

haiyangyiba的专栏 3910

OnePlus救砖指南:线刷包与OTA全量包实战解析

本文详细解析了OnePlus手机救砖的两种核心方法:线刷包与OTA全量包。针对手机变砖的不同状况(如黑屏、能进Recovery等),文章提供了清晰的判断标准和对应的实战操作指南。重点阐述了线刷包作为终极救砖手段的底层原理与详细步骤,并对比了OTA全量包作为温和修复方案的使用场景与卡刷流程,旨在帮助用户安全、有效地恢复手机系统。

weixin_28312391的博客 1327

android 中的二维码生成与去除白边

android 中的二维码生成与去除白边

weixin_42602900的博客 1210

置顶必读(1) | 滚雪球学Oracle教程导航帖,带你弯道超车(持续更新中)

什么是数据库管理系统(DBMS),Oracle在行业中的领先地位Oracle数据库的市场竞争与主要应用场景Oracle数据库的核心功能模块与未来技术发展趋势约束的高级应用:主键、唯一性、外键设计与管理表分区、视图、同义词与序列的最佳实践PL/SQL编程的设计哲学,如何高效使用Oracle SQL DeveloperPL/SQL代码调试与优化技巧RAC集群中的高可用性设计,负载均衡与并行查询的配置集群中的缓存一致性管理。

**My Coding Family** 1万+

STM32开发 -- GPIO详解

之前有简单讲过GPIO工作模式和寄存器,还是有点没搞明白。这次需要全方位的看一下了。 一、数据手册 1、STM32F105RC引脚说明 可知:STM32F105RC 一共有4组IO口 一共16X3+3=51个IO GPIOA0~A15 GPIOB0~B15 GPIOC0~C15 GPIOD0~D2 2、程序定义 GPIO端口号 STM32F1...

不积跬步,无以至千里 5万+

Java通过谷歌zxing生成二维码可添加logo图片

package com.example.demo.test; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.OutputStream; import java.util.*; import javax.imageio.

LJ_759482的博客 979

两点调制原理以及RF DAC和PLL SDM两条输入路径理解

特性数据本质原始数字比特流 (0/1)平滑后的预失真波形数据连接对象Σ-Δ调制器 (SDM)的小数输入RF DAC在系统中的角色主调制路径:通过改变PLL分频比产生频率偏移辅助补偿路径:通过RF DAC产生补偿电压,校正PLL失真可否加入延时可以且必须。用于数字时序对齐,对性能无影响。绝对不可以。会导致补偿失配,严重破坏信号频谱。功能目标实现数字域的频率调制确保模拟域的波形和频谱完美因此,在您所描述的这种先进发射机架构中,2-point数据是数字指令,送给SDM;

m0_49540263的博客 607

zxing生成二维码去除多余白边

可以看到,在renderResult方法中,QRCodeWriter直接是将原本二维码像素值直接以整数倍率扩增,因为内容的大小导致对应尺寸和二维码像素值无法整除关系,为了适应用户输入的尺寸,所以才产生了白边。因此白边是可以去除的,但是去除后白边的二维码因为是21*21,只能整数倍放大,做不到浮点值放大,因为最小单元像素点不能够再划分。第二部分是根据用户输入的大小,如100x100就是先扩大成84x84,剩余16x16就变成4个方位的8x8白边。如上,添加4行代码就可以完成去白边的功能需求。

gfdedexdcf的博客 1765

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:固定翼无人机的自动起飞与降落控制

本文介绍了使用Simulink对固定翼无人机自动起飞与降落控制系统进行建模与仿真的完整流程。首先构建了包含飞行器动力学模型、控制系统、环境模拟等模块的系统结构,详细阐述了简化动力学方程的推导和实现。重点讲解了PID控制器设计,包括起飞阶段的速度控制和降落阶段的高度控制策略。通过添加环境干扰和输入信号,建立了完整的仿真模型,并利用输出显示模块评估系统性能。该实例为无人机自主控制系统的开发提供了有效的仿真验证方法,有助于优化参数提高飞行稳定性。

MHD0815的博客 4311

专栏三:解析spatialCNV的使用

文章Spatially resolved clonal copy number alterations in benign and malignant tissue发在natur

m0_58549466的博客 1252

生成二维码方式一——zxing

1、借助第三方jar,如zxing zxing:https://github.com/zxingpackage com.han.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.ut...

妖月风的专栏 7812

GitHub霸榜神器!NextChat领衔DeepSeek全栈开发范式

NextChat(原ChatGPT-Next-Web)是GitHub上斩获81.2K星标的现象级开源项目,定位为"轻量级AI助手终端",支持DeepSeek、Claude、GPT-4、Gemini等20+主流大模型。• 原生集成DeepSeek、GPT-4、Gemini Pro等模型API,同时兼容RWKV-Runner、LocalAI等自建模型框架,通过环境变量。• 客户端体积仅5MB(Windows安装包约6MB),采用PWA渐进式Web应用技术,首屏加载速度优化至100KB级,老旧设备亦可流畅运行。

实战AI智能体 896

Zxing 生成二维码和条形码去掉白边

源码下载: https://github.com/AndroidZmm123/ZxingApplication 需求:根据输入内容,生成条形码或者二维码。 我们大多数会选择Zxing。因为jar包较小。且使用简单。根据内容生成二维码的工具类也是一搜一大堆。上面的源码里面也提供了一个。但是我们仔细看了下。会发现。不管生成的是条形码还是二维码都会有一部分的白边。如图: 我们可以看到周围有白...

androidzmm的博客 1万+

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 774

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

zxing生成二维码去白边

今天遇到了二维码生成的图片需要切掉白边的情况,查看之前的二维码生成代码,发现有这么一行 hints.put(EncodeHintType.MARGIN, 1); 感觉应该是设置边距的意思,果断改成 hints.put(EncodeHintType.MARGIN, 0); 发现其实并不能去掉白边。 于是百度找到方案: private static BufferedImage getNor

z69183787的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用Zxing玩转二维码白边的各个花样

现在在实际应用中使用的最为广泛的二维码生成工具就是Zxing库,本文以Zxing-1.60版本做的研究分析,获取最新版本的Zxing。1.生成二维码简单介绍一下Zxing二维码库的使用方式,Zxing库很强大,可以生成各种格式的二维码(分析源码部分时再看其他的类型),最常用的就是QR格式。1.1代码如果没有Zxing库,可以到我的云盘下载,地址Zxing-1.6 把jar包下载,copy到工程的l

pxr1989104的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

zxing去白边

2025年了,可能干不了几年了,还能写这种文章还是有点可笑。

LiteHeaven的专栏 371

zxing 生成二维码 边距修复

https://my.oschina.net/u/566591/blog/872770 二维码边距修复 使用zxing生成二维码时, 某些场景下,即便指定 padding 参数为0,依然有很大的白边,本篇博文主要分析产生这个的原因,以及如何修复这个问题 首先抛出一个源码传送门 二维码生成java工具类 问题重现 写个测试类如下,其中 genQrCode 方法调用zxi

z69183787的专栏 1万+

Java使用ZXing库生成带有Logo的二维码图片,并去除白边动态伸缩上传到阿里云OSS

在现代应用中,二维码因其高效的信息编码能力而被广泛应用。为了提升二维码的视觉效果和品牌识别度,通常会在二维码中嵌入Logo。本文将详细介绍使用ZXing库生成带有Logo的二维码图片,去除白边,并将生成的二维码上传到阿里云OSS。此外,本文还将介绍二维码的基本原理、QR Code的结构、图像处理技术以及阿里云OSS的基本概念。

勤于笔记,成于点滴。 1296

使用zxing生成二维码一些小点 计算空白区域大小 去除空白区域方法

     通常我们生成二维码需要做以下配置 Map&lt;EncodeHintType, Object&gt; hints = new HashMap&lt;&gt;(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//设置容错率默认为最高 hints.put(...

zengrenyuan的专栏 7378

【android应用】详解基于ZXing生成的二维码,文末附带源码---去除白边,以及透明底

最近在做一个二维码的相关的应用,顺带整理下相关的知识。今天我们来看看二维码的白边如何去除,以及如何生透明底的二维码。 前篇回顾:【android应用】基于ZXing生成的二维码,文末附带源码---添加logo、彩色、背景、文字、水印在这里都能找到 在上篇中我们已经知道了彩色二维码如何生成,以及logo、背景、文字、水印的添加,但里面那个白边一直占据着我们的视线,今天就来讲讲如何去除掉...

看图的博客 2182

C++ ZXing库生成的条码或二维码拉伸去白边。默认的zxing库生成条型码为什么不按设定的长度拉伸?

如果需要更灵活的比例控制,您可以考虑对 zxing 进行二次开发或使用自定义编码器来控制条形码的宽度分配。不过这可能涉及更多的代码修改和对 zxing 源码的理解。zxing 的设计初衷是尽可能保证条形码的可读性,因此默认行为不会自动拉伸或缩放生成的条形码,以避免失真。如果确实需要,建议后续通过图像处理方式进行调整。

chenhao0568的专栏 1271

zxing 二维码大白边一步一步修复指南

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34194551的博客 1663

解决ZXING生成二维码图片白框太大的问题

最近项目里需要生成一些二维码,使用之后发现一些问题,生成之后的图片,白色边框区域太大了,导致二维码内容区域太小。  百度了一下,有人说设置EncodeHintType.MARGIN属性即可,这个属性值为1-4,实际测试发现并没有什么卵用。(顺便说一下,一些比较老的版本中,这个EncodeHintType只有CHARACTER_SET和ERROR_CORRECTION两种属性设置,比较新的库才新增

guduershi的博客 1432
上一篇: Eclipse 快捷键大全
下一篇: zxing生成带logo的二维码
Java_funds
博客等级 码龄9年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值