From c04a6ec249a73b42e30b5316ebb96b94de883ca6 Mon Sep 17 00:00:00 2001 From: Junling Bu Date: Sun, 2 Dec 2018 20:17:49 +0800 Subject: [PATCH] =?UTF-8?q?chore[litemall-admin-api]:=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=94=A8=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../litemall/core/qcode/QCodeBase.java | 109 ------------------ .../litemall/core/qcode/QCodeGoodShare.java | 97 ---------------- .../litemall/core/qcode/QCodeGroupon.java | 88 -------------- 3 files changed, 294 deletions(-) delete mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeBase.java delete mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGoodShare.java delete mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGroupon.java diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeBase.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeBase.java deleted file mode 100644 index 57490b01..00000000 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeBase.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.linlinjava.litemall.core.qcode; - -import cn.binarywang.wx.miniapp.api.WxMaService; -import me.chanjar.weixin.common.error.WxErrorException; -import org.linlinjava.litemall.core.storage.StorageService; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -public abstract class QCodeBase { - - @Autowired - protected WxMaService wxMaService; - - @Autowired - protected StorageService storageService; - - protected abstract String getKeyName(String id); - - protected BufferedImage getQCode(String scene, String page) { - //创建该商品的二维码 - File file = null; - try { - file = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, page); - FileInputStream inputStream = new FileInputStream(file); - BufferedImage qrCodeImage = ImageIO.read(inputStream); - return qrCodeImage; - } catch (WxErrorException | IOException e) { - e.printStackTrace(); - } - - return null; - } - - protected void saveImage(String id, byte[] imageData) { -// MultipartFile multipartFile = new MockMultipartFile(getKeyName(id), getKeyName(id), "image/jpeg", imageData); -// //存储分享图 -// storageService.store(multipartFile, getKeyName(id)); - } - - /** - * 居中写文字 - * - * @param baseImage - * @param textToWrite - * @param font - * @param color - * @param y - */ - protected void drawTextInImgCenter(BufferedImage baseImage, String textToWrite, Font font, Color color, int y) { - Graphics2D g2D = (Graphics2D) baseImage.getGraphics(); - g2D.setColor(color); - - g2D.setFont(font); - g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - - // 计算文字长度,计算居中的x点坐标 - FontMetrics fm = g2D.getFontMetrics(font); - int textWidth = fm.stringWidth(textToWrite); - int widthX = (baseImage.getWidth() - textWidth) / 2; - // 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。 - - g2D.drawString(textToWrite, widthX, y); - // 释放对象 - g2D.dispose(); - } - - /** - * 写上文字 - * - * @param baseImage - * @param textToWrite - * @param font - * @param color - * @param x - * @param y - */ - protected void drawTextInImg(BufferedImage baseImage, String textToWrite, Font font, Color color, int x, int y) { - Graphics2D g2D = (Graphics2D) baseImage.getGraphics(); - g2D.setColor(color); - - g2D.setFont(font); - g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - - g2D.drawString(textToWrite, x, y); - g2D.dispose(); - } - - /** - * 画中画 - * - * @param baseImage - * @param imageToWrite - * @param x - * @param y - * @param width - * @param height - */ - protected void drawImgInImg(BufferedImage baseImage, BufferedImage imageToWrite, int x, int y, int width, int height) { - Graphics2D g2D = (Graphics2D) baseImage.getGraphics(); - g2D.drawImage(imageToWrite, x, y, width, height, null); - g2D.dispose(); - } -} diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGoodShare.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGoodShare.java deleted file mode 100644 index 23b3ea64..00000000 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGoodShare.java +++ /dev/null @@ -1,97 +0,0 @@ -package org.linlinjava.litemall.core.qcode; - -import org.linlinjava.litemall.core.system.SystemConfig; -import org.springframework.core.io.ClassPathResource; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URL; - -public class QCodeGoodShare extends QCodeBase { - - @Override - protected String getKeyName(String id) { - return "GOOD_QCODE_" + id + ".jpg"; - } - - /** - * 创建商品分享图 - * - * @param goodId - * @param goodPicUrl - * @param goodName - */ - public void createGoodShareImage(String goodId, String goodPicUrl, String goodName) { - if (!SystemConfig.isAutoCreateShareImage()) - return; - - BufferedImage qrCodeImage = getQCode("goods," + goodId, "pages/index/index"); - //将商品图片,商品名字,商城名字画到模版图中 - byte[] imageData = new byte[0]; - try { - imageData = drawPicture(qrCodeImage, goodPicUrl, goodName, SystemConfig.getMallName()); - } catch (IOException e) { - e.printStackTrace(); - } - - saveImage(goodId, imageData); - } - - /** - * 将商品图片,商品名字画到模版图中 - * - * @param qrCodeImage 二维码图片 - * @param goodPicUrl 商品图片地址 - * @param goodName 商品名称 - * @return - * @throws IOException - */ - private byte[] drawPicture(BufferedImage qrCodeImage, String goodPicUrl, String goodName, String shopName) throws IOException { - //底图 - ClassPathResource redResource = new ClassPathResource("back.jpg"); - BufferedImage red = ImageIO.read(redResource.getInputStream()); - - - //商品图片 - URL goodPic = new URL(goodPicUrl); - BufferedImage goodImage = ImageIO.read(goodPic); - - // --- 画图 --- - - //底层空白 bufferedImage - BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE); - - //画上图片 - drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight()); - - //画上商品图片 - drawImgInImg(baseImage, goodImage, 56, 135, 720, 720); - - //画上小程序二维码 - drawImgInImg(baseImage, qrCodeImage, 442, 1006, 340, 340); - - - Font font = new Font("Microsoft YaHei", Font.PLAIN, 42); - Color color = new Color(167, 136, 69); - - //写上商品名称 - drawTextInImg(baseImage, goodName, font, color, 112, 955); - - //写上商城名称 - drawTextInImgCenter(baseImage, shopName, font, color, 98); - - - //转jpg - BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage - .getHeight(), BufferedImage.TYPE_3BYTE_BGR); - result.getGraphics().drawImage(baseImage, 0, 0, null); - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - ImageIO.write(result, "jpg", bs); - - //最终byte数组 - return bs.toByteArray(); - } -} diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGroupon.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGroupon.java deleted file mode 100644 index 995ea34b..00000000 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeGroupon.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.linlinjava.litemall.core.qcode; - -import org.linlinjava.litemall.core.system.SystemConfig; -import org.linlinjava.litemall.db.domain.LitemallGroupon; -import org.springframework.core.io.ClassPathResource; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URL; - -public class QCodeGroupon extends QCodeBase { - @Override - protected String getKeyName(String id) { - return null; - } - - public void createGrouponShareImage(String goodName, String goodPicUrl, LitemallGroupon groupon) { - try { - BufferedImage qrCodeImage = getQCode("groupon," + groupon.getId(), "pages/index/index"); - //将商品图片,商品名字,商城名字画到模版图中 - byte[] imageData = drawPicture(qrCodeImage, goodPicUrl, goodName, SystemConfig.getMallName()); - saveImage(groupon.getId().toString(), imageData); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 将商品图片,商品名字画到模版图中 - * - * @param qrCodeImage 二维码图片 - * @param goodPicUrl 商品图片地址 - * @param goodName 商品名称 - * @return - * @throws IOException - */ - private byte[] drawPicture(BufferedImage qrCodeImage, String goodPicUrl, String goodName, String shopName) throws IOException { - //底图 - ClassPathResource redResource = new ClassPathResource("back.jpg"); - BufferedImage red = ImageIO.read(redResource.getInputStream()); - - - //商品图片 - URL goodPic = new URL(goodPicUrl); - BufferedImage goodImage = ImageIO.read(goodPic); - - // --- 画图 --- - - //底层空白 bufferedImage - BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE); - - //画上图片 - drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight()); - - //画上商品图片 - drawImgInImg(baseImage, goodImage, 56, 135, 720, 720); - - //画上小程序二维码 - drawImgInImg(baseImage, qrCodeImage, 442, 1006, 340, 340); - - - Font font = new Font("Microsoft YaHei", Font.PLAIN, 42); - Color color = new Color(167, 136, 69); - - //写上商品名称 - drawTextInImg(baseImage, goodName, font, color, 112, 955); - - //写上商城名称 - drawTextInImgCenter(baseImage, shopName, font, color, 98); - - - //转jpg - BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage - .getHeight(), BufferedImage.TYPE_3BYTE_BGR); - result.getGraphics().drawImage(baseImage, 0, 0, null); - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - ImageIO.write(result, "jpg", bs); - - //最终byte数组 - return bs.toByteArray(); - } -}