- 浏览: 257328 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
如图片所示
这里采用方案是:
1,使用jbarcode生成一维条码。(这里需要注意一点,jbc.setCheckDigit(false)不需要验校验位,不然会出现数据长度问题)
2,使用java程序生成上半部信息。
3,将图片进行拼接。
以下是代码:
这里采用方案是:
1,使用jbarcode生成一维条码。(这里需要注意一点,jbc.setCheckDigit(false)不需要验校验位,不然会出现数据长度问题)
2,使用java程序生成上半部信息。
3,将图片进行拼接。
以下是代码:
package com.duduli.li; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import org.jbarcode.JBarcode; import org.jbarcode.JBarcodeFactory; import org.jbarcode.encode.EAN13Encoder; import org.jbarcode.encode.InvalidAtributeException; import org.jbarcode.paint.TextPainter; import org.jbarcode.util.ImageUtil; public class BarcodeImageWithText { // 1,生成一维条码。 private static final int BARCODE_HEIGHT = 20; private static final int BARCODE_DPI = ImageUtil.DEFAULT_DPI; private static final String FONT_FAMILY = "console"; private static final int FONT_SIZE = 14; private static JBarcode jbc = null; static JBarcode getJBarcode() throws InvalidAtributeException { if (jbc == null) { jbc = JBarcodeFactory.getInstance().createEAN13(); jbc.setEncoder(EAN13Encoder.getInstance()); jbc.setTextPainter(CustomTextPainter.getInstance()); jbc.setBarHeight(BARCODE_HEIGHT); jbc.setXDimension(Double.valueOf(0.4).doubleValue()); jbc.setCheckDigit(false);// 对于固定条码的时候这里在条码中加入校验位,导致你写入13位提示14位 jbc.setShowText(true); } return jbc; } public static void createBarcode(String message) { try { File file = new File("d:/" + message + ".png"); FileOutputStream fos = new FileOutputStream(file); createBarcode(message, fos); fos.close(); } catch (IOException e) { throw new RuntimeException(e); } } public static void createBarcode(String message, OutputStream os) { try { BufferedImage image = getJBarcode().createBarcode(message); ImageUtil.encodeAndWrite(image, ImageUtil.PNG, os, BARCODE_DPI, BARCODE_DPI); os.flush(); } catch (Exception e) { throw new RuntimeException(e); } } protected static class CustomTextPainter implements TextPainter { private static CustomTextPainter instance = new CustomTextPainter(); public static CustomTextPainter getInstance() { return instance; } public void paintText(BufferedImage barCodeImage, String text, int width) { Graphics g2d = barCodeImage.getGraphics(); Font font = new Font(FONT_FAMILY, Font.PLAIN, FONT_SIZE * width); g2d.setFont(font); FontMetrics fm = g2d.getFontMetrics(); int height = fm.getHeight(); int center = (barCodeImage.getWidth() - fm.stringWidth(text)) / 2; g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, barCodeImage.getWidth(), barCodeImage.getHeight() * 1 / 20); g2d.fillRect(0, barCodeImage.getHeight() - (height * 9 / 10), barCodeImage.getWidth(), (height * 9 / 10)); g2d.setColor(Color.BLACK); g2d.drawString(text, center, barCodeImage.getHeight() - (height / 10) - 2); } } // 2, 生成头部的商品信息 public static void exportImg(List<String> list) { int width = 174; int height = 76; File file = new File("d:/image.png"); Font font = new Font("console", Font.BOLD, 14); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) bi.getGraphics(); g2.setBackground(Color.WHITE); g2.clearRect(0, 0, width, height); g2.setPaint(Color.BLACK); for (int i = 0; i < list.size(); i++) { FontRenderContext context = g2.getFontRenderContext(); Rectangle2D bounds = font.getStringBounds(list.get(i), context); double x = (width - bounds.getWidth()) / 2; double y = (height - bounds.getHeight()) / 2; double ascent = -bounds.getY(); double baseY = y + (ascent * (i - 1)); g2.drawString(list.get(i), (int) x, (int) baseY); } try { ImageIO.write(bi, "png", file); } catch (IOException e) { e.printStackTrace(); } } // 3,合并图片 public static boolean mergeImage(String[] imgs, String type, String dst_pic) { int len = imgs.length; if (len < 1) { return false; } File[] src = new File[len]; BufferedImage[] images = new BufferedImage[len]; int[][] ImageArrays = new int[len][]; for (int i = 0; i < len; i++) { try { src[i] = new File(imgs[i]); images[i] = ImageIO.read(src[i]); } catch (Exception e) { e.printStackTrace(); return false; } int width = images[i].getWidth(); int height = images[i].getHeight(); ImageArrays[i] = new int[width * height]; ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width); } int dst_height = 0; int dst_width = images[0].getWidth(); for (int i = 0; i < images.length; i++) { dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth(); dst_height += images[i].getHeight(); } if (dst_height < 1) { return false; } try { BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB); int height_i = 0; for (int i = 0; i < images.length; i++) { ImageNew.setRGB(0, height_i, dst_width, images[i].getHeight(), ImageArrays[i], 0, dst_width); height_i += images[i].getHeight(); } File outFile = new File(dst_pic); ImageIO.write(ImageNew, type, outFile);// 写图片 ,输出到硬盘 } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("商品类型:手机"); list.add("品牌:魅族"); list.add("商品价格:3199"); list.add("有效时间:2019-6-30"); exportImg(list); String code = "6974323434245"; createBarcode(code); String s[] = { "d:/image.png", "d:/" + code + ".png" }; mergeImage(s, "png", "d:/code/code_" + code + ".png"); for (String str : s) { new File(str).delete(); } } }
发表评论
-
使用poi实现xlsx的读取
2018-08-31 17:01 643这里只是记录下,使用poi进行读取xlsx。 可以读取全部数据 ... -
spring boot + jpa实现数据查询工作
2018-08-28 12:38 2420前期已经将mybatis和hibernate已经进行了掌握。 ... -
使用程序实现截屏获取teamview登录信息
2018-04-16 10:42 558很多的时候,我们需要使用teamview进行远程登录。 比如现 ... -
【java】jfreechart退出图标程序继续
2014-11-24 11:34 805做一个窗体,然后调用jfreechart进行图标显示。 当关闭 ... -
【java】改写js百度地图测距方法
2014-08-08 11:41 1576百度地图测距js代码: var EARTHRADIUS = 6 ... -
【web service】使用cxf对客户端进行开发工作
2014-07-16 10:04 9201,在eclipse中建立一个java项目,为客户端调用web ... -
【java】图片传输方案
2014-05-04 09:59 4581之前做的web service 涉及到一些基础的传输,如基本类 ... -
【java】调用微软语音系统读取文本
2014-05-04 09:52 2415先期准备工作: 安装微软speechsdk51,下载j ... -
【java】试用讯飞SDK开发语音tts初步代码
2014-04-22 16:41 7198tts开发对中文并不很支 ... -
【java】字符串的压缩转码base64
2012-09-11 09:13 10635由于客户端与服务端之间采用web service的方式进行传输 ... -
【java】使用jna调用delphi编译dll总结
2012-09-04 11:29 1178调用dll中,可以的入参为pchar。返回的参数为pwidec ... -
【机器环境】java语言环境不同会出现莫名其妙的问题
2012-09-01 10:49 1011有这么一个功能: 模块是这样做的,因为做的是底层。 首先上层使 ... -
【java】试用JNA调用Delphi的dll方法。
2012-08-30 11:04 5109参考文章:http://hi.baidu.com/zuchan ... -
【java】对sql语句进行解析。
2012-08-29 16:25 7054因为在项目中需要对sql进行解析,那么所以业务逻辑比较复杂。 ... -
【接口开发】一个底层业务的很麻烦的接口开发
2012-08-29 14:53 984接口框架采用cxf,然后查询使用hibernate+sql的方 ... -
【java多线程】昨天的一个面试题目
2012-08-09 10:24 1070设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次 ... -
【一个笔试题目】java按字节进行截断
2012-08-08 22:21 1541不可否认,这是一个蛋疼的笔试题: 编程:编写一个截取字符串的函 ... -
【java】判断一个数是不是2的N次方
2012-08-01 19:10 9762第一种方法,对N进行循环除以2. public boolea ... -
java 加密。
2012-07-27 15:14 1065mark一下。 java下面的加密有三类,1,为sun自己的 ... -
【JAVA】加密解密(转http://www.wangchao.net.cn/bbsdetail_1742.html)
2012-03-05 11:42 1428package com.duduli.li; impor ...
相关推荐
本文将深入探讨如何使用Java编程语言来调用ZPL(Zebra Programming Language)条码打印机,实现中文打印以及网络打印的功能。 ZPL是Zebra公司为它的条码打印机设计的一种编程语言,用于创建和控制打印任务。ZPL主要...
在Java编程环境中,条码打印是一项常见的需求,特别是在库存管理、物流跟踪以及商品销售等领域。本文将深入探讨如何使用Java实现条码生成和打印的功能。 首先,我们需要了解条码的基本概念。条码是一种将数字、字母...
在本文中,我们将深入探讨如何使用JAVA调用ZPL(Zebra Programming Language)条码打印机来打印中文实例。ZPL是一种编程语言,专门用于配置和控制Zebra品牌的条码和标签打印机,它允许用户创建自定义的标签设计,...
### Java调用条码打印机:实现与注意事项 在IT领域,条形码打印是物流、库存管理、资产追踪等场景中的重要环节。本文将详细解析如何利用Java编程语言调用条码打印机,以及在此过程中涉及的关键技术和注意事项。 ##...
在Java中,生成二维码通常会用到第三方库,例如Google的ZXing库,它是一个开源的条码解码和编码库,支持多种条码格式,包括QR码。 ZXing库提供了一些核心类来处理二维码的生成,其中`MultiFormatWriter`类是用于...
添加依赖后,你可以使用库中的`MultiFormatWriter`类来编码数据,`BitMatrix`来存储二进制信息,最后用`MatrixToImageWriter`将二进制矩阵转换成图片。 3. **编码过程**:在Java中,你需要创建一个`...
数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧...
3. **驱动选择**:选择适合的条码打印机驱动,这些驱动程序能够识别条码控件生成的图像并将其转化为打印机可以理解的指令。 4. **打印输出**:将设计好的条码图像发送到打印机,完成实际的物理打印。 至于...
ZXing库以Java语言为基础,兼容多种格式的条码图像处理,支持使用手机摄像头的本地驱动,实现了扫描和解析功能。在ZXing工程中,主要使用的是Android平台下的项目,它依赖于core项目和android-core项目,为Android...
下面我们将深入探讨如何使用Java来生成二维码,并基于提供的描述和文件名,解释其可能的实现方式。 首先,描述中提到的“两个类”很可能是用于生成二维码的核心组件。通常,一个类用于处理实际的编码逻辑,将文本...
本项目"myRccode.rar"显然是一个使用Java编程语言生成二维码的实现。以下是关于这个主题的详细知识点: 1. **二维码基本原理**: - 二维码由黑白相间的模块组成,每个模块代表不同的二进制数据。 - 它们分为多个...
此文档由XXXX科技有限公司的陈显平在2018-6-6创建并更新至V1.0版本,主要讲述了如何在Oracle E-Business Suite (EBS)中利用JavaServer Pages (JSP)实现QRCode二维条码的生成。文档经过了项目的项目经理和关键用户的...
文件"QRCode"可能包含了实现上述过程的Java代码,例如使用ZXing或qrcode4j生成二维码,并将其输出到Web页面的示例。通过阅读和理解这段代码,你可以学习到如何在实际项目中实现这一功能。如果需要进一步的优化,还...
本篇文章将深入探讨如何使用Java实现二维码生成工具类,并提供一个实用的示例。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,可以存储大量的数据,如文本、网址、联系...
总结来说,JAVA生成二维码涉及的主要知识点包括:理解二维码编码原理,使用JAVA二维码库如ZXing,编写生成二维码的JAVA代码,以及处理前端与后端的数据交互。通过这个功能,我们可以将任何文本信息转化为易于扫描的...
在IT行业中,二维码作为一种高效的信息编码方式,广泛应用于各种场景,如链接分享、电子票务、产品追溯等。Java作为一款流行的编程语言,也提供了多种方法来生成二维码。本篇文章将详细探讨如何在Java环境中创建...
在Java中,我们可以使用开源库来轻松实现二维码的生成和解码。 1. **生成二维码**: - **ZXing(Zebra Crossing)**:这是一个流行的开源Java库,支持多种一维和二维条码的生成和解析。使用ZXing,你可以创建一个`...
ZXing(Zebra Crossing)是Java开发的一个开源项目,它提供了多种条码和二维码的生成与扫描功能。在这个“zxing生成二维码”的项目中,我们可以看到几个关键元素:`core-3.2.1.jar` 和 `javase-3.2.1.jar` 是ZXing库...
假设我们的文本文档包含条码信息,我们可以使用条码扫描器或手机应用捕获条码,然后将其与转换后的Excel表格关联。条码可以作为唯一标识符,帮助我们定位和更新特定记录。例如,使用Python的`pyzbar`库可以解析条码...
5. 输出结果:最后,解码后的数据会被返回给应用程序,可以是纯文本、URL、联系人信息等,具体取决于条码类型。 在Android开发中,ZXing提供了集成库`com.google.zxing.client.android`,包含了一个完整的条码扫描...