- 浏览: 3421008 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
图片输出到客户端:
条形码/二维码之开源利器ZXing图文介绍 http://sjsky.iteye.com/blog/1142177
java二维码工具类,中间带LOGO的,很强大
http://blog.csdn.net/mmm333zzz/article/details/17259513
BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); ...... resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); resp.setDateHeader("Expires", 0); resp.setContentType("image/jpeg"); ServletOutputStream sos = resp.getOutputStream(); ImageIO.write(buffImg, "jpeg", sos); sos.close();
条形码/二维码之开源利器ZXing图文介绍 http://sjsky.iteye.com/blog/1142177
java二维码工具类,中间带LOGO的,很强大
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.2.0</version> </dependency>
http://blog.csdn.net/mmm333zzz/article/details/17259513
package com.util.cccm; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.OutputStream; import java.util.Hashtable; import java.util.Random; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatReader; import com.google.zxing.MultiFormatWriter; import com.google.zxing.Result; import com.google.zxing.common.BitMatrix; import com.google.zxing.common.HybridBinarizer; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; /** * 二维码工具类 * */ public class QRCodeUtil { private static final String CHARSET = "utf-8"; private static final String FORMAT_NAME = "JPG"; // 二维码尺寸 private static final int QRCODE_SIZE = 300; // LOGO宽度 private static final int WIDTH = 60; // LOGO高度 private static final int HEIGHT = 60; private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception { Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); hints.put(EncodeHintType.CHARACTER_SET, CHARSET); hints.put(EncodeHintType.MARGIN, 1); BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints); int width = bitMatrix.getWidth(); int height = bitMatrix.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, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); } } if (imgPath == null || "".equals(imgPath)) { return image; } // 插入图片 QRCodeUtil.insertImage(image, imgPath, needCompress); return image; } /** * 插入LOGO * * @param source * 二维码图片 * @param imgPath * LOGO图片地址 * @param needCompress * 是否压缩 * @throws Exception */ private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception { File file = new File(imgPath); if (!file.exists()) { System.err.println(""+imgPath+" 该文件不存在!"); return; } Image src = ImageIO.read(new File(imgPath)); int width = src.getWidth(null); int height = src.getHeight(null); if (needCompress) { // 压缩LOGO if (width > WIDTH) { width = WIDTH; } if (height > HEIGHT) { height = HEIGHT; } Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose(); src = image; } // 插入LOGO Graphics2D graph = source.createGraphics(); int x = (QRCODE_SIZE - width) / 2; int y = (QRCODE_SIZE - height) / 2; graph.drawImage(src, x, y, width, height, null); Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6); graph.setStroke(new BasicStroke(3f)); graph.draw(shape); graph.dispose(); } /** * 生成二维码(内嵌LOGO) * * @param content * 内容 * @param imgPath * LOGO地址 * @param destPath * 存放目录 * @param needCompress * 是否压缩LOGO * @throws Exception */ public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception { BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress); mkdirs(destPath); String file = new Random().nextInt(99999999)+".jpg"; ImageIO.write(image, FORMAT_NAME, new File(destPath+"/"+file)); } /** * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常) * @author lanyuan * Email: mmm333zzz520@163.com * @date 2013-12-11 上午10:16:36 * @param destPath 存放目录 */ public static void mkdirs(String destPath) { File file =new File(destPath); //当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常) if (!file.exists() && !file.isDirectory()) { file.mkdirs(); } } /** * 生成二维码(内嵌LOGO) * * @param content * 内容 * @param imgPath * LOGO地址 * @param destPath * 存储地址 * @throws Exception */ public static void encode(String content, String imgPath, String destPath) throws Exception { QRCodeUtil.encode(content, imgPath, destPath, false); } /** * 生成二维码 * * @param content * 内容 * @param destPath * 存储地址 * @param needCompress * 是否压缩LOGO * @throws Exception */ public static void encode(String content, String destPath, boolean needCompress) throws Exception { QRCodeUtil.encode(content, null, destPath, needCompress); } /** * 生成二维码 * * @param content * 内容 * @param destPath * 存储地址 * @throws Exception */ public static void encode(String content, String destPath) throws Exception { QRCodeUtil.encode(content, null, destPath, false); } /** * 生成二维码(内嵌LOGO) * * @param content * 内容 * @param imgPath * LOGO地址 * @param output * 输出流 * @param needCompress * 是否压缩LOGO * @throws Exception */ public static void encode(String content, String imgPath, OutputStream output, boolean needCompress) throws Exception { BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress); ImageIO.write(image, FORMAT_NAME, output); } /** * 生成二维码 * * @param content * 内容 * @param output * 输出流 * @throws Exception */ public static void encode(String content, OutputStream output) throws Exception { QRCodeUtil.encode(content, null, output, false); } /** * 解析二维码 * * @param file * 二维码图片 * @return * @throws Exception */ public static String decode(File file) throws Exception { BufferedImage image; image = ImageIO.read(file); if (image == null) { return null; } BufferedImageLuminanceSource source = new BufferedImageLuminanceSource( image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>(); hints.put(DecodeHintType.CHARACTER_SET, CHARSET); result = new MultiFormatReader().decode(bitmap, hints); String resultStr = result.getText(); return resultStr; } /** * 解析二维码 * * @param path * 二维码图片地址 * @return * @throws Exception */ public static String decode(String path) throws Exception { return QRCodeUtil.decode(new File(path)); } public static void main(String[] args) throws Exception { String text = "薯 灯可分列式本上楞珂要瓜熟蒂落!000000000000000"; QRCodeUtil.encode(text, "c:/df.jsp", "c:/a/", true); } }
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 1030http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 694http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2502http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2470Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1066跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1178JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1309freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1098原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2882原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1542http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2286http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3441http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1861Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1030使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1412管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1314集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4791使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2311apache shiro集群实现(一) session共享 h ...
相关推荐
NULL 博文链接:https://langyan.iteye.com/blog/1508432
ZXing(Zebra Crossing)是一个开源的、跨平台的条形码和二维码解码库,主要由Java编写,但也有.NET版本供C#开发者使用。标题提到的"zxing.dll"是ZXing库的一个.NET实现,特别适用于ASP.NET项目,支持.NET 2.0和.NET...
Google的ZXing(Zebra Crossing)是一个开源项目,它提供了跨平台的条形码和二维码生成及扫描功能。下面将详细阐述ZXing的工作原理以及如何利用其开发一个完整的条形码、二维码生成与扫描的Demo。 首先,让我们了解...
在Android应用开发中,ZXing(Zebra Crossing)是一个强大的开源库,用于处理条形码和二维码的扫描与生成。ZXing,源自Google,现在由社区维护,为开发者提供了跨平台的工具,使得在Android、iOS以及其他平台上实现...
ZXing(发音为 "zexing",源自 "Ze Xen",意为 "杂交编码")是一个开源项目,用于创建和解析一维条形码以及二维码。该项目最初由Google工程师Sean Owen开发,支持多种编程语言和平台,包括Java、C#和.NET。ZXing因其...
在移动设备开发领域,尤其是在Android平台上,ZXing(Zebra Crossing)是一个非常流行的开源库,用于处理各种类型的条形码和二维码。ZXingDemo项目是展示如何在Android应用中集成ZXing库,实现扫描和识别条形码与...
zxing.dll asp.net C#可以使用.net2.0 条形码/二维码生成、识别、V0.16.2
ZXing(Zebra Crossing)是一个开源的条形码和二维码处理库,广泛应用于移动设备上的扫描和生成。这个开发包提供了完整的源代码,允许开发者在Android项目中轻松集成条形码和二维码的功能。由于原始的包名包含了...
ZXing.Delphi是一款专为Delphi开发者设计的开源库,用于实现条形码和二维码的扫描与生成。这个版本是3.9.5,它已经更新以支持最新的Delphi 12版本,这意味着开发者可以利用这个强大的工具在Delphi 12环境下构建具有...
ZXing(Zebra Crossing)是一个开源的、多平台的条形码和二维码读取库,它的Python版本则为开发者提供了方便的接口来处理这两种编码。在Python中使用ZXing,你可以实现对图像中的条形码和二维码进行解码,从而获取...
首先,ZXing(Zebra Crossing)是一个开源的、跨平台的条形码和二维码读取库。它支持多种编码格式,如QR码、Data Matrix、UPC、EAN等,为开发者提供了便捷的条码识别功能。在AutoJS中集成ZXing,可以让我们的脚本...
在Android平台上进行条形码和二维码的识别与生成,ZXing库是一个不可或缺的工具。ZXing,全称为“Zebra Crossing”,是一个开源项目,提供了多种平台的条码处理能力,包括读取、生成以及解析。在Android应用开发中,...
开发人员可以利用开源库或者现成的API来创建自定义的条码和二维码。例如,Python有pyzbar和qrcode库,Java有ZXing(Zebra Crossing)库,JavaScript则有qrcode-generator库。这些工具使得在网页、移动应用和其他软件...
ZXing(又称为“ZXing库”或“二维码扫描器”)是一个开源Java库,它支持多种一维条形码和二维条码格式,包括但不限于QRCode、DataMatrix、UPC-A、EAN-13等。该库不仅提供Java版本,还支持Android和iOS平台,使得...
Google二维码生成解析zxing库 Android 代码,可以实现二维码生成,亲测可用。 代码为2016年6月9日从GitHub下载的,版本为3.2.1 GitHub对应地址代码为: https://github.com/zxing/zxing jar包原始下载地址为:...
本教程将详细介绍如何利用精简版的Zxing库在Android应用中实现快速、高效的条形码和二维码扫描功能。 首先,我们需要了解Zxing的基本概念。Zxing(又称“二维码解码器”)是一个跨平台的开源项目,由Google开发并...
本教程将详细介绍如何在Android应用中使用ZBar进行条码和二维码的扫描及图片解析。 首先,要集成ZBar,你需要在项目中添加ZBar的依赖。如果是使用Gradle构建系统,可以在`build.gradle`文件的`dependencies`块中...
在本文中,我们将深入探讨如何使用Zxing库来实现二维码的生成与扫描功能,以及条形码的处理。 Zxing,全称为"ZXing"("Zebra Crossing"的缩写),是一个开源的、跨平台的条码图像处理库。它支持多种类型的条形码和...
ZXing,全称为Zebra Crossing,是一个开源的、多平台的条形码和二维码读取与生成库。这个项目在Java平台上起源于2007年,后来发展出多个语言的版本,包括.NET Framework的ZXing.Net。在VB.NET环境下,ZXing库提供了...
与其相比的 https://github.com/codebude/QRCoder 开源项目,我经过尝试发现,QRCoder 在生成较长的字符串二维码时会失败,在识别图片中二维码质量较差或是较小时无法正常识别。于是最终选择了 ZXing.Net 开源库。 ...