From 5a2322d3b8abadf1f98ee59ed3fb366132492b6b Mon Sep 17 00:00:00 2001
From: xiaowuler <xiaowuler@163.com>
Date: Fri, 3 Dec 2021 13:48:47 +0800
Subject: [PATCH] modify some codes

---
 04.系统编码/Backend/pom.xml               |  1 +
 .../backend/config/WebMvcConfig.java          |  7 ++-
 .../backend/controller/ImageController.java   | 29 +++++++++++++
 .../backend/service/ImageService.java         | 43 +++++++++++++++++++
 .../src/main/resources/application.yml        |  4 ++
 .../UserInformationApplicationTests.java      | 12 +++++-
 .../src/components/DecisionSupport.vue        | 25 ++++++++---
 04.系统编码/Frontend/src/uilts/axios.ts   |  4 +-
 8 files changed, 114 insertions(+), 11 deletions(-)
 create mode 100644 04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/ImageController.java
 create mode 100644 04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java

diff --git a/04.系统编码/Backend/pom.xml b/04.系统编码/Backend/pom.xml
index 22bce2b..992203d 100644
--- a/04.系统编码/Backend/pom.xml
+++ b/04.系统编码/Backend/pom.xml
@@ -51,6 +51,7 @@
             <version>1.0.29</version>
         </dependency>
 
+
     </dependencies>
 
     <build>
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/config/WebMvcConfig.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/config/WebMvcConfig.java
index edc3787..2debb5a 100644
--- a/04.系统编码/Backend/src/main/java/com/userinformation/backend/config/WebMvcConfig.java
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/config/WebMvcConfig.java
@@ -1,5 +1,6 @@
 package com.userinformation.backend.config;
 
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@@ -12,8 +13,12 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
  */
 @Configuration
 public class WebMvcConfig extends WebMvcConfigurerAdapter {
+
+    @Value("${custom.image.path}")
+    private String path;
+
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("/product/**").addResourceLocations("file:D:\\Deployments\\LamanRadar\\product\\");
+        registry.addResourceHandler("/product/**").addResourceLocations("file:" + path + "/");
     }
 }
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/ImageController.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/ImageController.java
new file mode 100644
index 0000000..18bd322
--- /dev/null
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/ImageController.java
@@ -0,0 +1,29 @@
+package com.userinformation.backend.controller;
+
+import java.io.IOException;
+
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.userinformation.backend.service.ImageService;
+import com.userinformation.backend.util.RequestResult;
+
+/**
+ * @describe: 图片处理控制层
+ * @author: xiaowuler
+ * @createTime: 2021-12-03 13:10
+ */
+@RestController
+@RequestMapping("image")
+public class ImageController {
+
+    private final ImageService imageService;
+    public ImageController(ImageService imageService){
+        this.imageService = imageService;
+    }
+
+    @PostMapping("convert")
+    public RequestResult convert(String url) throws IOException {
+        return RequestResult.success(imageService.convert(url));
+    }
+}
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java
new file mode 100644
index 0000000..3b979fa
--- /dev/null
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/service/ImageService.java
@@ -0,0 +1,43 @@
+package com.userinformation.backend.service;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+/**
+ * @describe: 图片处理 逻辑层
+ * @author: xiaowuler
+ * @createTime: 2021-12-03 13:12
+ */
+@Service
+public class ImageService {
+
+    @Value("${custom.image.path}")
+    private String imagePath;
+
+    @Value("${custom.image.url}")
+    private String imageUrl;
+
+    private final static String TIF_FILE_SUFFIX = ".tif";
+    private final static String PNG_FILE_SUFFIX = ".png";
+
+    public String convert(String url) throws IOException {
+        String filepath = url.replace(imageUrl, imagePath);
+        File sourceFile = new File(filepath);
+        Assert.isTrue(sourceFile.exists(), "文件不存在");
+        Assert.isTrue(filepath.toLowerCase(Locale.ROOT).endsWith(TIF_FILE_SUFFIX), "文件格式不正确");
+        String targetFilePath = filepath.replace(TIF_FILE_SUFFIX, PNG_FILE_SUFFIX);
+        File targetFile = new File(targetFilePath);
+        if (!targetFile.exists()){
+            BufferedImage image = ImageIO.read(sourceFile);
+            ImageIO.write(image, "png", targetFile);
+        }
+        return targetFilePath.replace(imagePath, imageUrl);
+    }
+}
diff --git a/04.系统编码/Backend/src/main/resources/application.yml b/04.系统编码/Backend/src/main/resources/application.yml
index 246ed6f..69c8ccb 100644
--- a/04.系统编码/Backend/src/main/resources/application.yml
+++ b/04.系统编码/Backend/src/main/resources/application.yml
@@ -6,3 +6,7 @@ spring:
     username: root
     password: 3cqscbr@only1
     driver-class-name: com.mysql.cj.jdbc.Driver
+custom:
+  image:
+    url: http://112.124.40.88:8002/product
+    path: D:/Deployments/LamanRadar/product
diff --git a/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java b/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
index e184ec9..6d25383 100644
--- a/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
+++ b/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
@@ -1,5 +1,11 @@
 package com.userinformation.backend;
 
+import javax.imageio.ImageIO;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
@@ -7,7 +13,11 @@ import org.springframework.boot.test.context.SpringBootTest;
 class UserInformationApplicationTests {
 
     @Test
-    void contextLoads() {
+    void contextLoads() throws IOException {
+        File inputFile = new File("C:\\Users\\xiaowuler\\Desktop\\images\\decision-support\\plan-advice\\control-experiment\\TFLD_Q2.tif");
+        File outputFile = new File("C:\\Users\\xiaowuler\\Desktop\\output.png");
+        BufferedImage image = ImageIO.read(inputFile);
+        ImageIO.write(image, "png", outputFile);
     }
 
 }
diff --git a/04.系统编码/Frontend/src/components/DecisionSupport.vue b/04.系统编码/Frontend/src/components/DecisionSupport.vue
index ab19541..6c85fae 100644
--- a/04.系统编码/Frontend/src/components/DecisionSupport.vue
+++ b/04.系统编码/Frontend/src/components/DecisionSupport.vue
@@ -63,6 +63,7 @@
     import { onMounted, reactive, toRefs } from 'vue';
     import * as Tiff from 'browser-tiff.js';
     import { DecisionSupportConfig } from '../uilts/Config';
+import { get } from '../uilts/axios';
     
     export default {
         name: 'DecisionSupport',
@@ -128,18 +129,28 @@
             }
 
             const initImage = (type, imgName, index) => {
-                var xhr = new XMLHttpRequest();
-                xhr.responseType = 'arraybuffer';
-                xhr.open('GET', DecisionSupportConfig.getUrl(type, imgName));
-                xhr.onload = function (e) {
-                    let tiff = new Tiff({buffer: xhr.response});
+                console.log(DecisionSupportConfig.getUrl(type, imgName))
+                get(DecisionSupportConfig.getUrl(type, imgName)).then((response: any) => {
+                    console.log(response)
+                    let tiff = new Tiff({buffer: response.data});
                     let canvas = tiff.toCanvas();
                     let image = new Image();
                     image.src = canvas.toDataURL("image/png");
                     options.items[index].imgUrl = image.src;
                     options.items[index].preview = [image.src];
-                };
-                xhr.send();
+                })
+                // var xhr = new XMLHttpRequest();
+                // xhr.responseType = 'arraybuffer';
+                // xhr.open('GET', DecisionSupportConfig.getUrl(type, imgName));
+                // xhr.onload = function (e) {
+                //     let tiff = new Tiff({buffer: xhr.response});
+                //     let canvas = tiff.toCanvas();
+                //     let image = new Image();
+                //     image.src = canvas.toDataURL("image/png");
+                //     options.items[index].imgUrl = image.src;
+                //     options.items[index].preview = [image.src];
+                // };
+                // xhr.send();
             }
 
             return {
diff --git a/04.系统编码/Frontend/src/uilts/axios.ts b/04.系统编码/Frontend/src/uilts/axios.ts
index 7db59eb..d18d47e 100644
--- a/04.系统编码/Frontend/src/uilts/axios.ts
+++ b/04.系统编码/Frontend/src/uilts/axios.ts
@@ -5,8 +5,8 @@ import { ElLoading } from 'element-plus'
 
 let loading = null;
 const service = axios.create({
-    // baseURL:"http://localhost:8002",
-    baseURL:"",
+    baseURL:"http://localhost:8002",
+    // baseURL:"",
     timeout: 500000
 })