|
- package com.iformall.utils;
-
- import javax.imageio.ImageIO;
- import java.awt.*;
- import java.awt.font.FontRenderContext;
- import java.awt.geom.Rectangle2D;
- import java.awt.image.BufferedImage;
- import java.io.File;
-
- /**
- * Created by Stormeye on 2017/8/7.
- */
- public class QRCodeUtils {
-
- public static String PAGE_URL = "pages/index/index";
-
- public static final int QR_WIDTH = 430;
- public static final int QR_HIGHT = 430;
- public static final int QR_FONT_SIZE = 19;
- public static final int QR_H_TIP = 90;
- public static final int QR_H_TIP2 = 120;
-
- /**
- * 二维码 + 文字1
- *
- * @param oldimg
- * @param newimg
- * @param pressText
- */
- public static void graphicsGeneration(File oldimg, File newimg, String pressText) {
- int H_tip = QR_H_TIP; // 文字的高度
- int imageWidth = QR_WIDTH; // 图片的宽度
- int imageHeight = QR_HIGHT + QR_H_TIP; // 图片的高度
-
- BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
- // 设置图片的背景色
- Graphics2D main = image.createGraphics();
- main.setColor(Color.white);
- main.fillRect(0, 0, imageWidth, imageHeight);
-
- Graphics mainPic = image.getGraphics();
- BufferedImage bimg = null;
- try {
- bimg = ImageIO.read(oldimg);
- if (bimg != null) {
- mainPic.drawImage(bimg, 0, 0, QR_WIDTH, QR_HIGHT, null);
- mainPic.dispose();
- }
-
- Graphics2D tip = image.createGraphics();
- // 设置区域颜色
- tip.setColor(Color.white);
- // 填充区域并确定区域大小位置
- tip.fillRect(0, QR_HIGHT, QR_WIDTH, H_tip);
-
- // 设置字体颜色,先设置颜色,再填充内容
- tip.setColor(Color.black);
- // 设置字体
- Font tipFont = new Font("宋体", Font.PLAIN, QR_FONT_SIZE);
- tip.setFont(tipFont);
- FontRenderContext context = tip.getFontRenderContext();
- Rectangle2D bounds = tipFont.getStringBounds(pressText, context);
- double x = (QR_WIDTH - bounds.getWidth()) / 2;
- tip.drawString(pressText, (int) x, QR_HIGHT + 50);
-
- // 分割线
- tip.drawLine(0, QR_HIGHT, QR_WIDTH, QR_HIGHT);
-
- //FileOutputStream out = new FileOutputStream(newimg);
- ImageIO.write(image, "png", newimg);
- //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- //encoder.encode(image);
- //out.close();
-
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println(e);
- }
-
- }
-
- /**
- * 二维码 + 文字1 + 文字2
- *
- * @param oldimg
- * @param newimg
- * @param pressText1
- * @param pressText2
- */
- public static void graphicsGeneration2(File oldimg, File newimg, String pressText1, String pressText2) {
- int H_tip = QR_H_TIP2; // 文字的高度
- int imageWidth = QR_WIDTH; // 图片的宽度
- int imageHeight = QR_HIGHT + QR_H_TIP2; // 图片的高度
-
- BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
- // 设置图片的背景色
- Graphics2D main = image.createGraphics();
- main.setColor(Color.white);
- main.fillRect(0, 0, imageWidth, imageHeight);
-
- Graphics mainPic = image.getGraphics();
- BufferedImage bimg = null;
- try {
- bimg = ImageIO.read(oldimg);
- if (bimg != null) {
- mainPic.drawImage(bimg, 0, 0, QR_WIDTH, QR_HIGHT, null);
- mainPic.dispose();
- }
-
- Graphics2D tip = image.createGraphics();
- // 设置区域颜色
- tip.setColor(Color.white);
- // 填充区域并确定区域大小位置
- tip.fillRect(0, QR_HIGHT, QR_WIDTH, H_tip);
- // 设置字体颜色,先设置颜色,再填充内容
- tip.setColor(Color.black);
-
- // 设置字体
- Font tipFont = new Font("粗体", Font.BOLD, QR_FONT_SIZE);
- tip.setFont(tipFont);
- FontRenderContext context = tip.getFontRenderContext();
- Rectangle2D bounds1 = tipFont.getStringBounds(pressText1, context);
- double x = (QR_WIDTH - bounds1.getWidth()) / 2;
- tip.drawString(pressText1, (int) x, QR_HIGHT + 50);
-
- Rectangle2D bounds2 = tipFont.getStringBounds(pressText2, context);
- x = (QR_WIDTH - bounds2.getWidth()) / 2;
- tip.drawString(pressText2, (int) x, QR_HIGHT + 90);
- //FileOutputStream out = new FileOutputStream(newimg);
- ImageIO.write(image, "png", newimg);
- //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- //encoder.encode(image);
- //out.close();
-
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println(e);
- }
-
- }
-
- public static void main(String[] args) {
- File souce = new File("./uploads/null.png");
- File dest = new File("./uploads/new.png");
- graphicsGeneration(souce, dest, "长融世贸广场停车专用");
- }
- }
|