licailing 4 лет назад
Родитель
Сommit
08b2895687

+ 1 - 34
src/main/java/com/izouma/jiashanxia/service/PackageService.java

@@ -167,39 +167,6 @@ public class PackageService {
     }
 
     public String shareImg(Long userId, Long id) throws IOException, WxErrorException {
-        User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
-        byte[] bytes = wxMaService.getQrcodeService()
-                .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId + "&id=" + id, "pages/detail", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
-        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
-        BufferedImage codeImg = ImageIO.read(byteArrayInputStream);
-        BufferedImage result = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
-        Graphics2D g = result.createGraphics();
-        g.drawImage(codeImg, 251 * 2, 543 * 2, 94 * 2, 94 * 2, null);
-
-        BufferedImage avatar = ImageIO
-                .read(new URL(Optional.ofNullable(user.getAvatar()).orElse(Constants.DEFAULT_AVATAR)));
-        int size = Math.min(avatar.getWidth(), avatar.getHeight());
-        BufferedImage subImg = avatar
-                .getSubimage((avatar.getWidth() - size) / 2, (avatar.getHeight() - size) / 2, size, size);
-        BufferedImage avatarImg = new BufferedImage(44 * 2, 44 * 2, BufferedImage.TYPE_INT_ARGB);
-        Graphics2D g2 = avatarImg.createGraphics();
-        g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-        g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
-        g2.setComposite(AlphaComposite.SrcOver);
-        g2.setBackground(Color.GREEN);
-        g2.setClip(new Ellipse2D.Float(0, 0, 44 * 2, 44 * 2));
-        g2.drawImage(subImg, 0, 0, 44 * 2, 44 * 2, null);
-
-        g.drawImage(avatarImg, 276 * 2, 568 * 2, 44 * 2, 44 * 2, null);
-
-        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
-        Thumbnails.of(result)
-                .scale(1)
-                .outputQuality(.9f)
-                .outputFormat("jpg")
-                .toOutputStream(out);
-//        return out.toByteArray();
-        return Base64.getEncoder().encodeToString(out.toByteArray());
+        return userService.createShareImg2(userId, true, id);
     }
 }

+ 50 - 10
src/main/java/com/izouma/jiashanxia/service/UserService.java

@@ -602,7 +602,7 @@ public class UserService {
     public String shareImg(Long userId) throws IOException, WxErrorException {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         if (!(StringUtils.isNotEmpty(user.getShareImg()) && user.getShareImg().contains("/v2/"))) {
-            String url = this.createShareImg(userId);
+            String url = this.createShareImg2(userId, false, null);
             user.setShareImg(url);
             userRepo.save(user);
         }
@@ -612,10 +612,6 @@ public class UserService {
     public String createShareImg(Long userId) throws IOException, WxErrorException {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         BufferedImage shareImg = ImageIO.read(this.getClass().getResourceAsStream("/static/shareImg.png"));
-//        if (!home) {
-//            shareImg = ImageIO.read(new URL(String.valueOf(map.get("poster"))));
-//        }
-
         BufferedImage result = new BufferedImage(shareImg.getWidth(), shareImg.getHeight(), BufferedImage.TYPE_INT_RGB);
         Graphics2D g = result.createGraphics();
         g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
@@ -626,11 +622,6 @@ public class UserService {
 
         byte[] bytes = wxMaService.getQrcodeService()
                 .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId, "pages/home", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
-//        if (!home) {
-//            bytes = wxMaService.getQrcodeService()
-//                    .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId + "&id=" + map
-//                            .get("id"), "pages/detail", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
-//        }
         ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
         BufferedImage codeImg = ImageIO.read(byteArrayInputStream);
 
@@ -663,4 +654,53 @@ public class UserService {
         ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
         return storageService.uploadFromInputStream(in, "share_img/v2/" + userId + ".jpg");
     }
+
+    public String createShareImg2(Long userId, boolean home, Long packageId) throws IOException, WxErrorException {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+
+        BufferedImage result = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
+        Graphics2D g = result.createGraphics();
+        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+        g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+        g.setComposite(AlphaComposite.SrcOver);
+//        g.drawImage(shareImg, 0, 0, null);
+
+        byte[] bytes = wxMaService.getQrcodeService()
+                .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId, "pages/home", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
+        if (!home) {
+            bytes = wxMaService.getQrcodeService()
+                    .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId + "&id=" + packageId, "pages/detail", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
+        }
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+        BufferedImage codeImg = ImageIO.read(byteArrayInputStream);
+
+        g.drawImage(codeImg, 251 * 2, 543 * 2, 94 * 2, 94 * 2, null);
+
+        BufferedImage avatar = ImageIO
+                .read(new URL(Optional.ofNullable(user.getAvatar()).orElse(Constants.DEFAULT_AVATAR)));
+        int size = Math.min(avatar.getWidth(), avatar.getHeight());
+        BufferedImage subImg = avatar
+                .getSubimage((avatar.getWidth() - size) / 2, (avatar.getHeight() - size) / 2, size, size);
+        BufferedImage avatarImg = new BufferedImage(44 * 2, 44 * 2, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D g2 = avatarImg.createGraphics();
+        g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+        g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+        g2.setComposite(AlphaComposite.SrcOver);
+        g2.setBackground(Color.GREEN);
+        g2.setClip(new Ellipse2D.Float(0, 0, 44 * 2, 44 * 2));
+        g2.drawImage(subImg, 0, 0, 44 * 2, 44 * 2, null);
+
+        g.drawImage(avatarImg, 276 * 2, 568 * 2, 44 * 2, 44 * 2, null);
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+        Thumbnails.of(result)
+                .scale(1)
+                .outputQuality(.9f)
+                .outputFormat("jpg")
+                .toOutputStream(out);
+        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
+        return storageService.uploadFromInputStream(in, "share_img/v2/" + userId + ".jpg");
+    }
 }