|
@@ -1,8 +1,14 @@
|
|
|
package com.izouma.jiashanxia;
|
|
package com.izouma.jiashanxia;
|
|
|
|
|
|
|
|
|
|
+import cn.binarywang.wx.miniapp.api.WxMaService;
|
|
|
|
|
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
|
|
|
|
+import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor;
|
|
|
|
|
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
|
|
|
import com.izouma.jiashanxia.domain.BaseEntity;
|
|
import com.izouma.jiashanxia.domain.BaseEntity;
|
|
|
import com.izouma.jiashanxia.domain.User;
|
|
import com.izouma.jiashanxia.domain.User;
|
|
|
import com.izouma.jiashanxia.web.BaseController;
|
|
import com.izouma.jiashanxia.web.BaseController;
|
|
|
|
|
+import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
|
|
+import net.coobird.thumbnailator.Thumbnails;
|
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
|
|
import org.apache.commons.text.CaseUtils;
|
|
import org.apache.commons.text.CaseUtils;
|
|
|
import org.bytedeco.javacv.FFmpegFrameGrabber;
|
|
import org.bytedeco.javacv.FFmpegFrameGrabber;
|
|
@@ -22,11 +28,14 @@ import javax.imageio.ImageIO;
|
|
|
import java.awt.*;
|
|
import java.awt.*;
|
|
|
import java.awt.font.FontRenderContext;
|
|
import java.awt.font.FontRenderContext;
|
|
|
import java.awt.geom.AffineTransform;
|
|
import java.awt.geom.AffineTransform;
|
|
|
|
|
+import java.awt.geom.Ellipse2D;
|
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.BufferedImage;
|
|
|
|
|
+import java.io.ByteArrayInputStream;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Method;
|
|
|
|
|
+import java.net.URL;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.Paths;
|
|
@@ -158,4 +167,57 @@ public class CommonTest {
|
|
|
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
|
|
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
|
|
|
ImageIO.write(image, "jpeg", new File("/Users/drew/Desktop/1.jpg"));
|
|
ImageIO.write(image, "jpeg", new File("/Users/drew/Desktop/1.jpg"));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void shareImg() throws IOException, WxErrorException {
|
|
|
|
|
+ BufferedImage shareImg = ImageIO
|
|
|
|
|
+ .read(new File("/Users/drew/Projects/Java/jiashanxia/src/main/resources/static/shareImg.png"));
|
|
|
|
|
+ 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);
|
|
|
|
|
+ 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);
|
|
|
|
|
+
|
|
|
|
|
+ WxMaService wxMaService = new WxMaServiceImpl();
|
|
|
|
|
+ WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
|
|
|
|
|
+ config.setAppid("wx29e886237ed709b2");
|
|
|
|
|
+ config.setSecret("257c23ed1e257f260ab13ce6400ebf4f");
|
|
|
|
|
+ config.setToken("msgToken");
|
|
|
|
|
+ config.setAesKey("key");
|
|
|
|
|
+ config.setMsgDataFormat("JSON");
|
|
|
|
|
+ wxMaService.setWxMaConfig(config);
|
|
|
|
|
+
|
|
|
|
|
+ byte[] bytes = wxMaService.getQrcodeService()
|
|
|
|
|
+ .createWxaCodeUnlimitBytes("expert=true&invitor=123", "pages/home", 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("https://wx1.sinaimg.cn/mw690/006qrratgy1gnbbtuqiblj32802you0y.jpg"));
|
|
|
|
|
+ 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);
|
|
|
|
|
+
|
|
|
|
|
+ Thumbnails.of(result)
|
|
|
|
|
+ .scale(1)
|
|
|
|
|
+ .outputQuality(.9f)
|
|
|
|
|
+ .outputFormat("jpg")
|
|
|
|
|
+ .toFile("/Users/drew/Desktop/share.jpg");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|