|
|
@@ -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");
|
|
|
+ }
|
|
|
}
|