소스 검색

自动保存图片

詹子聪 5 년 전
부모
커밋
913b41b659
3개의 변경된 파일95개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      pom.xml
  2. 1 0
      src/main/java/com/miekir/shibei/controller/api/UserController.java
  3. 93 0
      src/main/java/com/miekir/shibei/tool/web/Sex8Tool.java

+ 1 - 0
pom.xml

@@ -132,6 +132,7 @@
         </dependency>
 
 
+
     </dependencies>
 
     <build>

+ 1 - 0
src/main/java/com/miekir/shibei/controller/api/UserController.java

@@ -310,6 +310,7 @@ public class UserController {
         responseResult.setMessage("上传背景失败");
 
         //String bgDir = request.getSession().getServletContext().getRealPath("bg") + File.separator;
+        // tomcat目录里面
         String currentDir = request.getSession().getServletContext().getRealPath("/");
         File bgDirFile = new File(new File(currentDir).getParentFile().getAbsolutePath(), "res/wuji/bg/");
         if (!bgDirFile.exists()) {

+ 93 - 0
src/main/java/com/miekir/shibei/tool/web/Sex8Tool.java

@@ -0,0 +1,93 @@
+package com.miekir.shibei.tool.web;
+
+import com.miekir.shibei.tool.TextUtils;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+/*#手动保存的图片(Nginx)
+location /manual/ {
+alias /file/images/eden/manual/;
+}*/
+public class Sex8Tool {
+    private static final String PATH_AUTO_FOLDER = "/file/images/eden/auto/";
+    private static final String CMD_GET_AUTO_FILE_COUNT = "ls -l " + PATH_AUTO_FOLDER +  " | grep \"^-\"|wc -l";
+    private static final String IMAGE_FORMAT = "jpg";
+    private static final String IMAGE_URL_FORMAT = "http://jianjie.life/auto/%s.%s";
+
+    private static final String HOST_FORMAT = "http://sohumayun.space/forum-96-%s.html";
+
+    private Sex8Tool() {}
+
+    /**
+     * 爬虫自动保存图片
+     * @param imageUrl
+     * @return
+     */
+    public static String autoSaveImage(String imageUrl) {
+        if (TextUtils.isEmpty(imageUrl)) {
+            return null;
+        }
+
+        String format = IMAGE_FORMAT;
+        int formatIndex = imageUrl.lastIndexOf(".");
+        if (formatIndex != -1 && formatIndex < imageUrl.length() - 1) {
+            format = imageUrl.substring(formatIndex + 1);
+        }
+
+        try {
+            URL url = new URL(imageUrl);
+            BufferedImage img = ImageIO.read(url);
+            File folder = new File(PATH_AUTO_FOLDER);
+            if (!folder.exists()) {
+                folder.mkdirs();
+            }
+
+            // 获取下一文件名
+            int futureFileCount = getFilesCount(CMD_GET_AUTO_FILE_COUNT) + 1;
+            File file = new File(folder, String.valueOf(futureFileCount) + format);
+            if (file.exists()) {
+                file.delete();
+            }
+            ImageIO.write(img, format, file);
+            return String.format(IMAGE_URL_FORMAT, String.valueOf(futureFileCount), format);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+
+    /**
+     * 获取文件目录的文件数
+     *
+     * @param commandStr
+     */
+    public static int getFilesCount(String commandStr) {
+        BufferedReader br = null;
+        try {
+            Process p = Runtime.getRuntime().exec(commandStr);
+            br = new BufferedReader(new InputStreamReader(p.getInputStream()));
+            /*String line = null;
+            StringBuilder sb = new StringBuilder();
+            while ((line = br.readLine()) != null) {
+                sb.append(line + "\n");
+            }*/
+            return Integer.parseInt(br.readLine());
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (br != null) {
+                try {
+                    br.close();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return 0;
+    }
+}