資源簡介
兩種方案介紹,整個源碼可以運行,源碼中包含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?????????????for?(int?x?=?0;?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個文件信息
評論
共有 條評論