import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Hashtable; import javax.imageio.ImageIO; import org.apache.log4j.Logger; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public final class MatrixCodeUtil{ private static Logger logger = Logger.getLogger(MatrixCodeUtil.class); private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; public static BitMatrix createQRCode(String content, int width, int height){ Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); //设置字符编码 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 指定纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); BitMatrix matrix = null; try { matrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); } catch (WriterException e) { logger.error(e); e.printStackTrace(); } return matrix; } public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { 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); } } ImageIO.write(image, format, file); } public static void addLogoWriteToFile(BitMatrix matrix, String targetPath, String logoPath, int logoPart){ 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); } } BufferedImage logo = null; try { logo = ImageIO.read(new File(logoPath)); } catch (IOException e) { e.printStackTrace(); } Graphics2D g = image.createGraphics(); //考虑到logo照片贴到二维码中,建议大小不要超过二维码的1/5; int logoWidth = width / logoPart; int logoHeight = height / logoPart; //logo起始位置,此目的是为logo居中显示 int x = (height - logoWidth) / 2; int y = (height - logoHeight) / 2; //绘制图 g.drawImage(logo, x, y, logoWidth, logoHeight, null); g.setStroke(new BasicStroke(2)); g.setColor(Color.GRAY); g.drawRect(x, y, logoWidth, logoHeight); g.dispose(); try { ImageIO.write(image, "jpg", new File(targetPath)); } catch (IOException e) { logger.error(e); e.printStackTrace(); } } public static void main(String [] arr){ try { String content = "['name':'test','company':'11111']"; String targetPath = "e:/Desktop/test.jpg"; String logoPath = "e:/Desktop/logo_comp.jpg"; int width = 400; int height = 400; int logoPart = 6; BitMatrix matrix = MatrixCodeUtil.createQRCode(content, width, height); MatrixCodeUtil.addLogoWriteToFile(matrix, targetPath, logoPath, logoPart); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码...
小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 ...
二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成...
标题中的“解压全能我那个二维码生成器加手机安卓程序非精简版”指的是一个集成了解压缩功能和二维码生成器的软件应用,特别强调了这不是精简版本,意味着它包含完整的功能集。 1. **解压缩软件**:在IT行业中,解...
微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小...
二维码生成器是一种便捷的信息编码工具,它能够将各种数据,如文字、网址、名片信息、电子邮箱、电话号码等,转换成二维图形——二维码,供手机、电子扫描器等设备快速读取。在电脑上使用二维码生成器,可以极大地...
二维码生成在信息技术领域中是一项常见的任务,特别是在移动设备和物联网应用中。C语言,作为一种基础且广泛应用的编程语言,虽然不如高级脚本语言如Python或Java那样方便地提供现成的库来处理图像和编码,但依然...
二维码生成器是一种便捷的技术,能够将各种数据,如网址、文本、联系信息等,转换成图形化的二维码,便于快速扫描和读取。本项目利用C#编程语言,并借助NuGet包管理器引入了第三方组件QrCodeNet,使得开发者能够轻松...
【标题】:“基于STM32的二维码生成程序” 在物联网和嵌入式系统领域,STM32微控制器因其高性能、低功耗以及丰富的资源而被广泛应用。二维码(Quick Response Code)作为一种高效的数据编码方式,已经渗透到我们...
《基于MFC的二维码生成与打印工具详解》 在信息技术高速发展的今天,二维码作为一种便捷的信息载体,被广泛应用于各种场景,如产品标识、网址跳转、电子票务等。而利用编程技术生成并打印二维码,可以进一步提升...
二维码生成器是一款在个人计算机(PC)上使用的应用程序,专门设计用于创建各种类型的数据编码为二维码,便于快速扫描和信息传递。这款中文版的二维码生成器界面友好,操作简便,适用于那些希望在数字营销、信息分享...
掌握C++二维码生成与读取技术,开发者需要理解二维码编码规范,熟悉图像处理原理,并能熟练使用提供的库。通过分析源代码和运行示例,可以深入理解其工作原理,从而在实际项目中灵活运用。 总之,"tiaoxingma.rar...
【VB制作二维码生成程序源码】是一个基于Visual Basic(VB)开发的项目,它能够创建二维码,这是一种广泛用于存储和传递信息的二维条形码。二维码在现代社会的应用非常广泛,如产品标识、网址链接、电子支付等。通过...
【帝国CMS二维码生成插件】是一款专为帝国CMS系统设计的实用工具,旨在帮助网站管理员在不依赖外部API,如Google API的情况下,快速便捷地生成和集成二维码功能。这款插件简化了二维码生成的流程,使得在自己的网站...
微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成...
【基于Java开发的二维码生成小程序】是一个利用Java编程语言实现的实用工具,它能够帮助用户快速生成可扫描的二维码,这些二维码在扫描后能够跳转到预设的网站。这个小程序集成了二维码编码技术,使得非技术人员也能...
二维码生成工具和URL缩短服务是互联网中非常实用的技术,它们在日常生活中被广泛应用于各种场景,如分享网页、名片交换、广告推广等。本源码集合提供了一款国外开发的PHP程序,旨在帮助用户创建二维码并生成短链接,...
二维码生成软件.exe
在这个特定的上下文中,"VSTO二维码生成源码(VB版)"指的是使用Visual Basic.NET(VB.NET)语言编写的,集成在Office应用中的二维码生成功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code...
二维码生成器是一种将数据编码为二维图形的工具,广泛应用于移动支付、信息分享、广告推广等领域。在这个项目中,我们采用JavaScript(js)与Servlet技术来实现一个在线的二维码生成器。JavaScript是一种运行在...