From 1c7d77e9a5f6f286b7049aab54aaf8e106daf431 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 16 七月 2024 17:38:02 +0800
Subject: [PATCH] 提交

---
 server/service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java |  128 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 124 insertions(+), 4 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java b/server/service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
index b6af5c6..a09dcac 100644
--- a/server/service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
+++ b/server/service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
@@ -4,6 +4,7 @@
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileItemFactory;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
@@ -43,8 +44,8 @@
         System.out.println("缁撴潫锛�" + (System.currentTimeMillis() - starttime) / 1000);
     }
 
-    private static final int width = 898;
-    private static final int height = 1308;
+    private static final int width = 750;
+    private static final int height = 1194;
 
     /**
      * 鐢熸垚鍒嗕韩鍥剧墖
@@ -195,7 +196,7 @@
         }
     }
 
-    public static InputStream bufferedImageToInputStream(BufferedImage backgroundImage) throws IOException {
+    public static InputStream bufferedImageToInputStream(BufferedImage backgroundImage) {
         return bufferedImageToInputStream(backgroundImage, "jpg");
     }
 
@@ -207,7 +208,7 @@
      * @return
      * @throws IOException
      */
-    public static InputStream bufferedImageToInputStream(BufferedImage backgroundImage, String format) throws IOException {
+    public static InputStream bufferedImageToInputStream(BufferedImage backgroundImage, String format)  {
         ByteArrayOutputStream bs = new ByteArrayOutputStream();
         try (
                 ImageOutputStream
@@ -215,6 +216,8 @@
             ImageIO.write(backgroundImage, format, imOut);
             InputStream is = new ByteArrayInputStream(bs.toByteArray());
             return is;
+        }catch (Exception e){
+            return null;
         }
     }
 
@@ -265,8 +268,125 @@
         }
         return resMatrix;
     }
+    public static InputStream generateUserCardImg(String imgurl, String qrcode, String name,String type, String phone
+            , String shopaddr, String shopname
+            ,String phoneIcon
+            ,String addrIcon
+            ,String shopIcon
+            ,String logoIcon)  {
+
+        BufferedImage bi =  new BufferedImage(750, 1194, BufferedImage.TYPE_INT_RGB);
+        //寰楀埌瀹冪殑缁樺埗鐜(杩欏紶鍥剧墖鐨勭瑪)
+        Graphics2D g2 = (Graphics2D) bi.getGraphics();
+        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+        g2.fillRect(0, 0, 750, 1194);
+        //鑳屾櫙鍥剧墖
+        BufferedImage img1 =getImgIO(imgurl);
+        if(img1!=null){
+            int w = img1.getWidth();
+            int h = img1.getHeight();
+            int h1 = (int)((double)w *700/750);
+            int w1 = (int)((double)h *750/700);
+            if(h>h1){
+               h = h1;
+            }
+            if(w>w1){
+               w = w1;
+            }
+            img1 = img1.getSubimage(0,0,w,h);
+            g2.drawImage(img1, 0, 0, 750, 700, null);
+        }else{
+            g2.setColor(new Color(102, 102, 102, 1));
+            g2.drawRect( 0, 0, 750, 700);
+        }
+
+        int th = 30;
+        //鍚嶇О
+        if(name.length()>5){
+            name = name.substring(0,5)+"...";
+        }
+        g2.setColor(Color.black);
+        g2.setFont(new Font("榛戜綋", Font.PLAIN, 40));
+        g2.drawString(name, 40, 742+th);
+
+        int w = 60+ name.length()* 40;
+        g2.setColor(new Color(176, 135, 113));
+        g2.drawRoundRect(w,744-10,85,50,15,15);//鐢讳竴涓渾瑙掔煩褰�
+
+        g2.setColor(new Color(176, 135, 113));
+        g2.setFont(new Font("榛戜綋", Font.PLAIN, 30));
+        g2.drawString(type, w+12, 741+th);
+
+        if(StringUtils.isNotBlank(qrcode)){
+            //涓汉浜岀淮鐮�
+            BufferedImage img2 = getImgIO(qrcode);
+            if(img2!=null){
+                g2.drawImage(img2, 522, 740, 188, 188, null);
+            }
+            g2.setColor(new Color(176, 135, 113));
+            g2.setFont(new Font("榛戜綋", Font.PLAIN, 24));
+            g2.drawString("鎵爜娣诲姞濂藉弸", 544, 944+th);
+        }
+
+        //鎵嬫満鍙�
+        BufferedImage img4 = getImgIO(phoneIcon);
+        if(img4!=null){
+            g2.drawImage(img4, 40, 830 , 34, 36, null);
+        }
+        g2.setColor(Color.GRAY);
+        g2.setFont(new Font("榛戜綋", Font.PLAIN, 30));
+        g2.drawString(phone, 94, 828+th);
+        //闂ㄥ簵鍚嶇О
+        BufferedImage img5 = getImgIO(shopIcon);
+        if(img4!=null){
+            g2.drawImage(img5, 40, 904 , 34, 36, null);
+        }
+        if(shopname.length()>11){
+            shopname = shopname.substring(0,11)+"...";
+        }
+        g2.setColor(Color.GRAY);
+        g2.setFont(new Font("榛戜綋", Font.PLAIN, 30));
+        g2.drawString(shopname, 94,901+th);
 
 
+        BufferedImage img3 = getImgIO(addrIcon);
+        if(img3!=null){
+            g2.drawImage(img3, 40, 980, 34, 36, null);
+        }
+        dealDrawShopAddr(g2,94,973+th,shopaddr);
+        //搴曢儴
 
+        BufferedImage img6 = getImgIO(logoIcon);
+        if(img6!=null){
+            g2.drawImage(img6, 254, 1126+th-20, 242, 28, null);
+        }
 
+        InputStream inputStream = bufferedImageToInputStream(bi);
+        return inputStream;
+    }
+
+    private static void dealDrawShopAddr(Graphics2D g2, int x, int y, String shopaddr) {
+        int num =shopaddr.length() / 13;
+        for (int i = 0; i <= num; i++) {
+            String temp ="";
+            if(shopaddr.length() >= (i+1)*13){
+                temp = shopaddr.substring(i*13,(i+1)*13);
+            }else{
+                temp=shopaddr.substring( i*13);
+            }
+            //鍦板潃
+            g2.setColor(Color.GRAY);
+            g2.setFont(new Font("榛戜綋", Font.PLAIN, 30));
+            g2.drawString(temp, x, y+i*40);
+        }
+    }
+
+    private static BufferedImage getImgIO(String imgurl) {
+        try {
+        return     ImageIO.read(new URL(imgurl));
+        }catch (Exception e){
+
+        }return null;
+    }
 }

--
Gitblit v1.9.3