• 大小: 15.44MB
    文件类型: .zip
    金币: 2
    下载: 2 次
    发布日期: 2023-07-25
  • 语言: Java
  • 标签: zebra  zpl  

资源简介

两种方案介绍,整个源码可以运行,源码中包含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个文件信息

评论

共有 条评论