资源简介
两种方案介绍,整个源码可以运行,源码中包含zpl中文手册及需要使用的第三方库及jar包,demo完美解决中文打印及二维码中中文乱码问题
代码片段和文件信息
package com.sylujia;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 实现思路:
* 1、获取图片的二值化字节数组 这一步是关键
* 2、将字节数组转为十六进制
* 3、压缩十六进制字符串 结尾为1、0或者与上一行相同的;相同的连续字符压缩
* 4、拼凑ZPL编码,宽度需要扩大,因为需要时8个点(1字节)的整数倍
*/
public class Image2Zpl {
public static int imgLength = 0;
static Pattern ZEROS=Pattern.compile(“0+$“)ONES=Pattern.compile(“1+$“)MULTI_W=Pattern.compile(“([0-9A-Z])\\1{2}“);
public static void main(String[] args) throws IOException {
System.out.println(image2Zpl(ImageIO.read(new File(“d://label1.png“))));
}
/**
* 第一种:只把二维码图片转换成相对应的zpl指令
* @param image
* @return
*/
public static String image2Zpl(BufferedImage image) {
//获取图片的字节数组
DataBufferByte data=(DataBufferByte) getBinaryGrayImage(image).getRaster().getDataBuffer();
byte[] imgData=data.getData();
System.out.println(“image.getWidth(): “+image.getWidth());
int newW=(image.getWidth()+7)/8;//实际每行字节大小,8个点,每个点1位,共8位
String[] strs=byte2HexStr(imgDatanewW);
int bytes=imgData.length;
imgLength = bytes;
// return String.format(“^XA~DG%d%d%d%s^FO5050^XG%d11^FS^XZ“ bytes bytes newW compress(strs)bytes);
return String.format(“~DG%d%d%d%s“ bytes bytes newW compress(strs));
}
/**
* 把整个标签图片转换成完成的zpl指令
* @param image
* @return
*/
public static String image2Zpl2(BufferedImage image) {
//获取图片的字节数组
DataBufferByte data=(DataBufferByte) getBinaryGrayImage(image).getRaster().getDataBuffer();
byte[] imgData=data.getData();
System.out.println(“image.getWidth(): “+image.getWidth());
int newW=(image.getWidth()+7)/8;//实际每行字节大小,8个点,每个点1位,共8位
String[] strs=byte2HexStr(imgDatanewW);
int bytes=imgData.length;
imgLength = bytes;
return String.format(“^XA~DG%d%d%d%s^FO5050^XG%d11^FS^XZ“ bytes bytes newW compress(strs)bytes);
// return String.format(“~DG%d%d%d%s“ bytes bytes newW compress(strs));
}
/**
* 获取二值化图,并取反
* @param srcImage
* @return
*/
private static BufferedImage getBinaryGrayImage(BufferedImage srcImage) {
BufferedImage dstImage = new BufferedImage(srcImage.getWidth() srcImage.getHeight() BufferedImage.TYPE_BYTE_BINARY);
dstImage.getGraphics().drawImage(srcImage 0 0 null);
for (int y = 0; y < dstImage.getHeight(); y++) {
for (int x = 0; x < dstImage.getWidth(); x++) {
Color color = new Color(dstImage.getRGB(x y));
//获取该点的像素的RGB的颜色
Color newColor = new Color(255 - color.getRed() 255 - color.getGreen() 255 - color.getBlue());
dstImage.setRGB(x y newColor.getRGB());
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-05 15:20 zebraDemo\
文件 294 2018-05-05 15:24 zebraDemo\.classpath
文件 385 2018-05-05 15:20 zebraDemo\.project
目录 0 2018-05-05 15:20 zebraDemo\.settings\
文件 598 2018-05-05 15:20 zebraDemo\.settings\org.eclipse.jdt.core.prefs
目录 0 2018-05-05 15:24 zebraDemo\bin\
目录 0 2018-05-05 15:24 zebraDemo\bin\com\
目录 0 2018-05-05 15:24 zebraDemo\bin\com\sylujia\
目录 0 2018-05-05 15:24 zebraDemo\bin\com\sylujia\code\
文件 6319 2018-05-05 15:24 zebraDemo\bin\com\sylujia\code\TwoDimensionCode.class
文件 834 2018-05-05 15:24 zebraDemo\bin\com\sylujia\code\TwoDimensionCodeImage.class
文件 5387 2018-05-05 15:24 zebraDemo\bin\com\sylujia\Image2Zpl.class
文件 2592 2018-05-05 15:24 zebraDemo\bin\com\sylujia\ImageProducerUtil.class
文件 8368 2018-05-05 15:26 zebraDemo\bin\com\sylujia\ZplPrinter.class
目录 0 2018-05-05 15:28 zebraDemo\bin\resource\
文件 1099539 2018-04-23 20:25 zebraDemo\bin\resource\QRCode.jar
文件 937 2018-05-05 15:28 zebraDemo\bin\resource\readme.txt
文件 487296 2018-03-13 11:16 zebraDemo\bin\resource\ts24.lib
文件 7446826 2018-05-05 15:19 zebraDemo\bin\resource\ZPL语言中文手册_ZHCN.pdf
目录 0 2018-05-05 15:21 zebraDemo\src\
目录 0 2018-05-05 15:21 zebraDemo\src\com\
目录 0 2018-05-05 15:22 zebraDemo\src\com\sylujia\
目录 0 2018-05-05 15:22 zebraDemo\src\com\sylujia\code\
文件 7921 2018-05-05 15:22 zebraDemo\src\com\sylujia\code\TwoDimensionCode.java
文件 532 2018-05-05 15:22 zebraDemo\src\com\sylujia\code\TwoDimensionCodeImage.java
文件 5460 2018-05-05 15:22 zebraDemo\src\com\sylujia\Image2Zpl.java
文件 2458 2018-05-05 15:23 zebraDemo\src\com\sylujia\ImageProducerUtil.java
文件 11092 2018-05-05 15:26 zebraDemo\src\com\sylujia\ZplPrinter.java
目录 0 2018-05-05 15:22 zebraDemo\src\resource\
文件 1099539 2018-04-23 20:25 zebraDemo\src\resource\QRCode.jar
文件 937 2018-05-05 15:28 zebraDemo\src\resource\readme.txt
............此处省略2个文件信息
评论
共有 条评论