From 56fcde8c93a1a10bc50fac775e370a2db57f520e Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 20 一月 2026 17:08:30 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java | 134 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 134 insertions(+), 0 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
index 8a443f0..0c7b424 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
@@ -1,6 +1,8 @@
package com.doumee.core.utils;
import com.google.zxing.common.BitMatrix;
+import lombok.extern.slf4j.Slf4j;
+import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
@@ -12,12 +14,14 @@
import javax.imageio.stream.ImageOutputStream;
import java.awt.*;
import java.awt.geom.Ellipse2D;
+import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URL;
+@Slf4j
public class GeneratePicUtil {
static String bg="https://shoeslxkj.oss-cn-beijing.aliyuncs.com/file/20230404/SysBaseBackGround/D56231512C0B4A4C9D06B02F9566B0B0.png";
@@ -268,7 +272,137 @@
return resMatrix;
}
+ public static BufferedImage getImgIO(String imgurl) {
+ try {
+ return ImageIO.read(new URL(imgurl));
+ }catch (Exception e){
+ log.error("娴锋姤==>鎷夊彇鍥剧墖鎶ラ敊锛�"+e.getMessage());
+ }return null;
+ }
+ private static BufferedImage getImgIO(InputStream is) {
+ if(is ==null){
+ log.error("=============================qrcode error 灏忕▼搴忕爜涓虹┖");
+ }else{
+
+ log.error("=============================qrcode okay 灏忕▼搴忕爜鏈夋湁鏁告摎");
+ }
+ try {
+ return ImageIO.read(is);
+ }catch (Exception e){
+ log.error("=============================qrcode error 灏忕▼搴忕爜涓虹┖11111111111:"+e.getMessage());
+
+ }
+ return null;
+ }
+
+ public static int th = 30;
+ public static InputStream generateShareWithUserImg(BufferedImage imgurl, InputStream mpCode) throws IOException {
+ int w = imgurl.getWidth();
+ int h = imgurl.getHeight();
+ double rate = (double)w/750d;
+
+ //寰楀埌瀹冪殑缁樺埗鐜(杩欏紶鍥剧墖鐨勭瑪)
+ Graphics2D g2 = (Graphics2D) imgurl.getGraphics();
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+ //鑳屾櫙鍥剧墖
+ g2.setColor(Color.white);
+ Font font =new Font("榛戜綋", Font.PLAIN, (int)(24 * rate));
+ g2.setFont(font);
+ FontMetrics fontMetrics = g2.getFontMetrics(font);
+ int textWidth = fontMetrics.stringWidth("鎵爜鐪嬫洿澶�");
+ g2.drawString("鎵爜鐪嬫洿澶�", (int)(w -(textWidth+20*rate)),h-(int)(rate*(50-th)));
+
+ BufferedImage img3 = getImgIO(mpCode);
+ if(img3!=null){
+ g2.setColor(Color.white);
+ g2.fillOval((int)(w-130*rate), (int)(h-rate*150), (int)(100*rate) , (int)(100*rate));
+ g2.drawImage(img3, (int)(w-130*rate), (int)(h-rate*150), (int)(100*rate) , (int)(100*rate), null);
+ }
+ InputStream inputStream = bufferedImageToInputStream(imgurl);
+ return inputStream;
+ }
+
+ /**
+ * 鍥剧墖璁剧疆鍦嗚
+ * @param srcImage
+ * @return
+ * @throws
+ */
+ public static BufferedImage setRadius(BufferedImage srcImage, int radius, int border, int padding){
+ int width = srcImage.getWidth();
+ int height = srcImage.getHeight();
+ int canvasWidth = width + padding * 2;
+ int canvasHeight = height + padding * 2;
+
+ BufferedImage image = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D gs = image.createGraphics();
+ gs.setComposite(AlphaComposite.Src);
+ gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ gs.setColor(Color.WHITE);
+ gs.fill(new RoundRectangle2D.Float(0, 0, canvasWidth, canvasHeight, radius, radius));
+ gs.setComposite(AlphaComposite.SrcAtop);
+ gs.drawImage(setClip(srcImage, radius), padding, padding, null);
+ if(border !=0){
+ gs.setColor(Color.white);
+ gs.setStroke(new BasicStroke(border));
+ gs.drawRoundRect(padding, padding, canvasWidth - 2 * padding, canvasHeight - 2 * padding, radius, radius);
+ }
+ gs.dispose();
+ return image;
+ }
+
+ /**
+ * 鍥剧墖鍒囧渾瑙�
+ * @param srcImage
+ * @param radius
+ * @return
+ */
+ public static BufferedImage setClip(BufferedImage srcImage, int radius){
+ int width = srcImage.getWidth();
+ int height = srcImage.getHeight();
+ BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D gs = image.createGraphics();
+
+ gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ gs.setClip(new RoundRectangle2D.Double(0, 0, width, height, radius, radius));
+ gs.drawImage(srcImage, 0, 0, null);
+ gs.dispose();
+ return image;
+ }
+
+ public static BufferedImage transfromToImage(String imgUrl,String suffix){
+ BufferedImage originalImage = null;
+ try {
+ originalImage = ImageIO.read(new URL(imgUrl));
+ } catch (IOException e) {
+ log.error("娴锋姤==>鎷夊彇鍥剧墖鎶ラ敊锛�"+e.getMessage());
+ return null;
+ }
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ try {
+ Thumbnails.of(originalImage)
+ .scale(1)
+ .outputFormat("png".equals(suffix.toLowerCase())?"PNG":"JPEG")
+ .outputQuality(0.8)
+ .imageType(BufferedImage.TYPE_INT_RGB)
+ .toOutputStream(outputStream);
+ } catch (IOException e) {
+ log.error("娴锋姤==>鍘嬬缉鍥剧墖鎶ラ敊锛�"+e.getMessage());
+ return null;
+ }
+ byte[] data = outputStream.toByteArray();
+ // 2. 鍖呰涓鸿緭鍏ユ祦
+ ByteArrayInputStream bis = new ByteArrayInputStream(data);
+ // 3. 瑙g爜涓� BufferedImage
+ try {
+ return ImageIO.read(bis);
+ } catch (IOException e) {
+ log.error("娴锋姤==>杞祦鎶ラ敊锛�"+e.getMessage());
+ return null;
+ }
+ }
}
--
Gitblit v1.9.3