首頁 >Java >java教程 >java ZXing產生二維碼及條碼實例分享

java ZXing產生二維碼及條碼實例分享

高洛峰
高洛峰原創
2017-01-20 14:18:111843瀏覽

1、jar包:   ZXing-core-3.3.0.jar    http://mvnrepository.com/artifact/com.google.zxing/core

  〠 m〠〠 /artifact/com.google.zxing/javase

BufferedImageLuminanceSource.java

package com.webos.util;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import com.google.zxing.LuminanceSource;
public class BufferedImageLuminanceSource extends LuminanceSource {
 private final BufferedImage image;
 private final int left;
 private final int top;
 public BufferedImageLuminanceSource(BufferedImage image) {
  this(image, 0, 0, image.getWidth(), image.getHeight());
 }
 public BufferedImageLuminanceSource(BufferedImage image, int left, int top, int width, int height) {
  super(width, height);
  int sourceWidth = image.getWidth();
  int sourceHeight = image.getHeight();
  if (left + width > sourceWidth || top + height > sourceHeight) {
   throw new IllegalArgumentException("Crop rectangle does not fit within image data.");
  }
  for (int y = top; y < top + height; y++) {
   for (int x = left; x < left + width; x++) {
    if ((image.getRGB(x, y) & 0xFF000000) == 0) {
     image.setRGB(x, y, 0xFFFFFFFF); // = white
    }
   }
  }
  this.image = new BufferedImage(sourceWidth, sourceHeight, BufferedImage.TYPE_BYTE_GRAY);
  this.image.getGraphics().drawImage(image, 0, 0, null);
  this.left = left;
  this.top = top;
 }
 public byte[] getRow(int y, byte[] row) {
  if (y < 0 || y >= getHeight()) {
   throw new IllegalArgumentException("Requested row is outside the image: " + y);
  }
  int width = getWidth();
  if (row == null || row.length < width) {
   row = new byte[width];
  }
  image.getRaster().getDataElements(left, top + y, width, 1, row);
  return row;
 }
 public byte[] getMatrix() {
  int width = getWidth();
  int height = getHeight();
  int area = width * height;
  byte[] matrix = new byte[area];
  image.getRaster().getDataElements(left, top, width, height, matrix);
  return matrix;
 }
 public boolean isCropSupported() {
  return true;
 }
 public LuminanceSource crop(int left, int top, int width, int height) {
  return new BufferedImageLuminanceSource(image, this.left + left, this.top + top, width, height);
 }
 public boolean isRotateSupported() {
  return true;
 }
 public LuminanceSource rotateCounterClockwise() {
  int sourceWidth = image.getWidth();
  int sourceHeight = image.getHeight();
  AffineTransform transform = new AffineTransform(0.0, -1.0, 1.0, 0.0, 0.0, sourceWidth);
  BufferedImage rotatedImage = new BufferedImage(sourceHeight, sourceWidth, BufferedImage.TYPE_BYTE_GRAY);
  Graphics2D g = rotatedImage.createGraphics();
  g.drawImage(image, transform, null);
  g.dispose();
  int width = getWidth();
  return new BufferedImageLuminanceSource(rotatedImage, top, sourceWidth - (left + width), getHeight(), width);
 }
}

   

QRCodeUtil.java

rrrerel

QRCodeUtil.java

以上就是本文的全部內容,希望本文的內容對大家的學習或工作能帶來一定的幫助,同時也希望多多支持PHP中文網!

更多java ZXing產生二維碼及條碼實例分享相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn