#
18516761980
2021-06-07 3002486dad95464e124b2aee02ff880d3003c903
#
3个文件已修改
1个文件已添加
171 ■■■■ 已修改文件
.idea/kls-asrs.iml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/slcf/controller/MatCodeController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/slcf/util/BarcodeUtils.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/kls-asrs.iml
@@ -4,7 +4,9 @@
    <facet type="jpa" name="JPA">
      <configuration>
        <setting name="validation-enabled" value="true" />
        <datasource-mapping />
        <datasource-mapping>
          <factory-entry name="kls-asrs" />
        </datasource-mapping>
        <naming-strategy-map />
      </configuration>
    </facet>
pom.xml
@@ -356,7 +356,6 @@
    </dependencies>
    <build>
        <finalName>wms</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
src/main/java/com/slcf/controller/MatCodeController.java
@@ -11,10 +11,12 @@
import java.util.StringTokenizer;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.slcf.util.BarcodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -431,42 +433,60 @@
     * 生成一维码
     * @param response
     */
//    @RequestMapping("/showCode1.action")
//    public void showCode1(HttpServletResponse response,HttpServletRequest request){
//        try {
//            response.setContentType("image/jpeg");
//            javax.servlet.ServletOutputStream servletoutputstream = response.getOutputStream();
//            response.setHeader("Pragma", "no-cache");
//            response.setHeader("Cache-Control", "no-cache");
//            response.setDateHeader("Expires", 0L);
//            try
//            {
//                BarCode barcode1 = getChart(request);
//                barcode1.setSize(barcode1.width, barcode1.height);
//                if(barcode1.autoSize)
//                {
//                    BufferedImage bufferedimage = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 13);
//                    java.awt.Graphics2D graphics2d = bufferedimage.createGraphics();
//                    barcode1.paint(graphics2d);
//                    barcode1.invalidate();
//                    graphics2d.dispose();
//                }
//                BufferedImage bufferedimage1 = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 1);
////                BufferedImage bufferedimage1 = new BufferedImage(barcode1.width, barcode1.height, 1);
//                java.awt.Graphics2D graphics2d1 = bufferedimage1.createGraphics();
//                barcode1.paint(graphics2d1);
//                JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(servletoutputstream);
//                JPEGEncodeParam jpegencodeparam = jpegimageencoder.getDefaultJPEGEncodeParam(bufferedimage1);
//                jpegencodeparam.setQuality(1.0F, true);
//                jpegimageencoder.setJPEGEncodeParam(jpegencodeparam);
//                jpegimageencoder.encode(bufferedimage1, jpegencodeparam);
//            }catch(Exception exception)
//            {
//                exception.printStackTrace();
//            }
//        }catch (Exception e) {
//            System.out.println(e.getMessage());
//        }
//    }
    /**
     * 生成一维码
     * @param response
     */
    @RequestMapping("/showCode1.action")
    public void showCode1(HttpServletResponse response,HttpServletRequest request){
        try {
            response.setContentType("image/jpeg");
            javax.servlet.ServletOutputStream servletoutputstream = response.getOutputStream();
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0L);
            try
            {
                BarCode barcode1 = getChart(request);
                barcode1.setSize(barcode1.width, barcode1.height);
                if(barcode1.autoSize)
                {
                    BufferedImage bufferedimage = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 13);
                    java.awt.Graphics2D graphics2d = bufferedimage.createGraphics();
                    barcode1.paint(graphics2d);
                    barcode1.invalidate();
                    graphics2d.dispose();
                }
                BufferedImage bufferedimage1 = new BufferedImage(barcode1.getSize().width, barcode1.getSize().height, 1);
//                BufferedImage bufferedimage1 = new BufferedImage(barcode1.width, barcode1.height, 1);
                java.awt.Graphics2D graphics2d1 = bufferedimage1.createGraphics();
                barcode1.paint(graphics2d1);
                JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(servletoutputstream);
                JPEGEncodeParam jpegencodeparam = jpegimageencoder.getDefaultJPEGEncodeParam(bufferedimage1);
                jpegencodeparam.setQuality(1.0F, true);
                jpegimageencoder.setJPEGEncodeParam(jpegencodeparam);
                jpegimageencoder.encode(bufferedimage1, jpegencodeparam);
            }catch(Exception exception)
            {
                exception.printStackTrace();
            }
        }catch (Exception e) {
            System.out.println(e.getMessage());
    public void showCode1(HttpServletResponse response,HttpServletRequest request) throws IOException {
        String matCode = request.getParameter("matCode");
        Integer width = Integer.parseInt(request.getParameter("width"));
        Integer height = Integer.parseInt(request.getParameter("height"));
        BufferedImage img = BarcodeUtils.encode(matCode, width, height);
//        BufferedImage img = BarcodeUtils.encode(matCode);
        if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
            throw new IOException("Could not write an image of format jpg");
        }
        response.getOutputStream().flush();
        response.getOutputStream().close();
    }
    
//    public BarCode barcode;
src/main/java/com/slcf/util/BarcodeUtils.java
New file
@@ -0,0 +1,78 @@
package com.slcf.util;
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.oned.Code128Writer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
/**
 * 条形码工具
 * Created by vincent on 2020/6/6
 */
public class BarcodeUtils {
    private static final int DEFAULT_WIDTH = 150;
    private static final int DEFAULT_HEIGHT = 40;
    /**
     * 条形码编码
     */
    public static BufferedImage encode(String string){
        return encode(string, null, null);
    }
    public static BufferedImage encode(String string, Integer width, Integer height){
        if (width == null) {
            width = DEFAULT_WIDTH;
        }
        if (height == null) {
            height = DEFAULT_HEIGHT;
        }
        try {
            Code128Writer writer = new Code128Writer();
            BitMatrix bar = writer.encode(string, BarcodeFormat.CODE_128, width, height);
            return MatrixToImageWriter.toBufferedImage(bar);
        }
        catch (WriterException e){ throw new RuntimeException(e); }
    }
    /**
     * 条形码解码
     */
    public static String decode(String imgPath) {
        BufferedImage image = null;
        Result result = null;
        try {
            image = ImageIO.read(new File(imgPath));
            if (image == null) {
                throw new RuntimeException("the decode image may be not exit.");
            }
            LuminanceSource source = new BufferedImageLuminanceSource(image);
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
            result = new MultiFormatReader().decode(bitmap, null);
            return result.getText();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args) {
        String imgPath = "F:/zxing_EAN-13.png";
        String contents = "6926557300360";
        int width = 105, height = 50;
        encode(contents, width, height);
        System.out.println("finished zxing EAN-13 encode.");
        String decodeContent = decode(imgPath);
        System.out.println("解码内容如下:" + decodeContent);
        System.out.println("finished zxing EAN-13 decode.");
    }
}