4 changed files with 88 additions and 2 deletions
@ -0,0 +1,55 @@ |
|||
package com.elink.esua.epdc.commons.tools.utils; |
|||
|
|||
import java.awt.image.BufferedImage; |
|||
import java.io.ByteArrayOutputStream; |
|||
import java.util.Hashtable; |
|||
import org.apache.axis.encoding.Base64; |
|||
|
|||
import javax.imageio.ImageIO; |
|||
|
|||
import com.google.zxing.BarcodeFormat; |
|||
import com.google.zxing.EncodeHintType; |
|||
import com.google.zxing.MultiFormatWriter; |
|||
import com.google.zxing.common.BitMatrix; |
|||
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; |
|||
|
|||
public class QRCodeGenerator { |
|||
|
|||
private static final String CHARSET = "utf-8"; |
|||
private static final String FORMAT_NAME = "JPG"; |
|||
// 二维码尺寸
|
|||
private static final int QRCODE_SIZE = 300; |
|||
// LOGO宽度
|
|||
private static final int WIDTH = 60; |
|||
// LOGO高度
|
|||
private static final int HEIGHT = 60; |
|||
|
|||
public static String createImage(String content) throws Exception { |
|||
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); |
|||
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); |
|||
hints.put(EncodeHintType.CHARACTER_SET, CHARSET); |
|||
hints.put(EncodeHintType.MARGIN, 1); |
|||
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, |
|||
BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints); |
|||
int width = bitMatrix.getWidth(); |
|||
int height = bitMatrix.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, bitMatrix.get(x, y) ? 0xFF000000 |
|||
: 0xFFFFFFFF); |
|||
} |
|||
} |
|||
// if (imgPath == null || "".equals(imgPath)) {
|
|||
// return image;
|
|||
// }
|
|||
ByteArrayOutputStream stream = new ByteArrayOutputStream(); |
|||
ImageIO.write(image, "png", stream); |
|||
String base64 = Base64.encode(stream.toByteArray()); |
|||
System.out.println(base64); |
|||
stream.flush(); |
|||
stream.close(); |
|||
return base64; |
|||
} |
|||
} |
Loading…
Reference in new issue