浏览代码

解决部分照片压缩后上传海康方便倒了的问题

dzx 1 年之前
父节点
当前提交
a29ffabd03

+ 20 - 0
src/main/java/com/xjrsoft/module/hikvision/util/FaceImportUtil.java

@@ -1,13 +1,17 @@
 package com.xjrsoft.module.hikvision.util;
 
+import cn.hutool.core.util.IdUtil;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.common.utils.ImageUtil;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.net.URL;
+import java.nio.file.Files;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
@@ -124,6 +128,22 @@ public class FaceImportUtil {
             //压缩到200k
             imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
 
+            //压缩之后,存入本地
+            String[] split = imageUrl.split("\\.");
+            String suffix = split[split.length - 1];
+            String filePath = "/" + IdUtil.getSnowflakeNextId() + "." + suffix;
+            FileOutputStream fos = new FileOutputStream(filePath);
+            fos.write(imageBytes);
+            fos.close();
+            //再读取出来
+            File file = new File(filePath);
+            imageBytes = Files.readAllBytes(file.toPath());
+
+            //删除文件
+            if(file.exists()){
+                file.delete();
+            }
+
             base64String = Base64.getEncoder().encodeToString(imageBytes);
             inputStream.close();
             outputStream.close();

+ 18 - 1
src/main/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessController.java

@@ -62,7 +62,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.time.LocalDateTime;
 import java.util.Base64;
 import java.util.Date;
@@ -238,6 +240,21 @@ public class StundentFaceProcessController {
             byte[] imageBytes = outputStream.toByteArray();
             //压缩到200k
             imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
+            //压缩之后,存入本地
+            String suffix = StringUtils.substringAfterLast(filename, StringPool.DOT);
+            String tempFilePath = "/" + IdUtil.getSnowflakeNextId() + "." + suffix;
+            FileOutputStream fos = new FileOutputStream(tempFilePath);
+            fos.write(imageBytes);
+            fos.close();
+            //再读取出来
+            java.io.File tempFile = new java.io.File(tempFilePath);
+            imageBytes = Files.readAllBytes(tempFile.toPath());
+
+            //删除文件
+            if(tempFile.exists()){
+                tempFile.delete();
+            }
+
 
             String base64String = Base64.getEncoder().encodeToString(imageBytes);
             inputStream.close();
@@ -248,7 +265,7 @@ public class StundentFaceProcessController {
 
             //存入数据库
             long fileId = IdUtil.getSnowflakeNextId();
-            String suffix = StringUtils.substringAfterLast(filename, StringPool.DOT);
+
             Long folderId = IdWorker.getId();
             File fileEntity = new File();
             fileEntity.setId(fileId);

+ 18 - 1
src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java

@@ -50,7 +50,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.zip.ZipEntry;
@@ -219,6 +221,22 @@ public class TeacherFaceProcessController {
             //压缩到200k
             imageBytes = ImageUtil.compressUnderSize(imageBytes, 204800);
 
+            //压缩之后,存入本地
+            String suffix = StringUtils.substringAfterLast(filename, StringPool.DOT);
+            String tempFilePath = "/" + IdUtil.getSnowflakeNextId() + "." + suffix;
+            FileOutputStream fos = new FileOutputStream(tempFilePath);
+            fos.write(imageBytes);
+            fos.close();
+            //再读取出来
+            java.io.File tempFile = new java.io.File(tempFilePath);
+            imageBytes = Files.readAllBytes(tempFile.toPath());
+
+            //删除文件
+            if(tempFile.exists()){
+                tempFile.delete();
+            }
+
+
             String base64String = Base64.getEncoder().encodeToString(imageBytes);
             inputStream.close();
             outputStream.close();
@@ -228,7 +246,6 @@ public class TeacherFaceProcessController {
 
             //存入数据库
             long fileId = IdUtil.getSnowflakeNextId();
-            String suffix = StringUtils.substringAfterLast(filename, StringPool.DOT);
             Long folderId = IdWorker.getId();
             File fileEntity = new File();
             fileEntity.setId(fileId);