標籤:二維碼
package liupeng;import java.io.File;import org.json.JSONException;import org.json.JSONObject;public class Test {/** * 描述:二維碼的產生 * @author liupeng * @param args * @throws JSONException */public static void main(String[] args) throws JSONException {JSONObject obj = new JSONObject();obj.put("name", "liupeng");obj.put("age", 22);obj.put("school", "[鹽城師範學院]資訊科學與技術學院->軟體工程");//String tomcatRoot = httpRequest.getSession().getServletContext().getRealPath("/SealAndSignImages");//String path = QRCodeOperator.MakeQRCode(tomcatRoot,"劉鵬的二維碼", obj.toString());String path = QRCodeOperator.MakeQRCode("F:"+File.separator,"劉鵬的二維碼", obj.toString());if(path != ""){System.out.println("二維碼內容為:"+obj.toString());}}}package liupeng;import java.awt.image.BufferedImage;import java.io.File;import java.util.HashMap;import java.util.Map;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import com.google.zxing.BarcodeFormat;import com.google.zxing.Binarizer;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.Result;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.HybridBinarizer;public class QRCodeOperator {/** * 產生二維碼 * @param name 二維碼檔案名稱(不帶尾碼) * @param content 二維碼內容 * @return 二維碼圖片路徑 */public static String MakeQRCode(String filepath,String name, String content){String retPath = "";try { //String content = "120605181003;http://www.cnblogs.com/jtmjx"; //String path = FileOperator.getRootPath();String path = filepath;//httpRequest.getSession().getServletContext().getRealPath("/SealAndSignImages"); MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 200, 200,hints); File file1 = new File(path, name+".jpg"); MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1); retPath = file1.getAbsolutePath(); } catch (Exception e) { e.printStackTrace(); }return retPath;}public static void AnalysisQRCode(){try { MultiFormatReader formatReader = new MultiFormatReader();String filePath = "F:/Users/Administrator/Desktop/testImage/test.jpg";File file = new File(filePath);BufferedImage image = ImageIO.read(file);;LuminanceSource source = new BufferedImageLuminanceSource(image);Binarizer binarizer = new HybridBinarizer(source);BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);Map hints = new HashMap();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");Result result = formatReader.decode(binaryBitmap,hints);System.out.println("result = "+ result.toString());System.out.println("resultFormat = "+ result.getBarcodeFormat());System.out.println("resultText = "+ result.getText()); } catch (Exception e) {e.printStackTrace();}}}package liupeng;import com.google.zxing.common.BitMatrix;import javax.imageio.ImageIO;import java.io.File;import java.io.OutputStream;import java.io.IOException;import java.awt.image.BufferedImage;public final class MatrixToImageWriter { private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; private MatrixToImageWriter() {} public static BufferedImage toBufferedImage(BitMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); } } return image; } public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, file)) { throw new IOException("Could not write an image of format " + format + " to " + file); } } public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, stream)) { throw new IOException("Could not write an image of format " + format); } }}
注意:需要匯入org.json.jar和zxing-core-2.0.jar