523096025 2 jaren geleden
bovenliggende
commit
48763bbf59

+ 5 - 0
admin/pom.xml

@@ -25,6 +25,11 @@
         </dependency>
 
         <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.8</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>

+ 24 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/common/utils/UploadImage.java

@@ -110,8 +110,31 @@ public class UploadImage {
             System.out.println("上传成功!");
         }
     }
+
+    public static byte[] getImageCom(MultipartFile file) throws IOException {
+        //获取文件输入流
+        InputStream inputStream = file.getInputStream();
+        try {
+            // 把图片读入到内存中
+            BufferedImage bufImg = ImageIO.read(inputStream);
+            // 压缩代码,存储图片文件byte数组
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            //防止图片变红,这一步非常重要
+            BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);
+            bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);
+            //先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式
+            ImageIO.write(bufferedImage,"jpg",bos);
+            return bos.toByteArray();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            inputStream.close();
+        }
+        return null;
+    }
     public static byte[] resizeImage(byte[] srcImgData, float reduceMultiple) throws IOException {
         BufferedImage bi = ImageIO.read(new ByteArrayInputStream(srcImgData));
+
         int width = (int) (bi.getWidth() * reduceMultiple); // 源图宽度
         int height = (int) (bi.getHeight() * reduceMultiple); // 源图高度
         Image image = bi.getScaledInstance(width, height, Image.SCALE_SMOOTH);
@@ -125,6 +148,7 @@ public class UploadImage {
         return bOut.toByteArray();
     }
 
+
     public  String uploadImg( MultipartFile image ) {
         String originalFilename = image.getOriginalFilename();
         String filenameExtension = StringUtils.getFilenameExtension(originalFilename);

+ 15 - 12
admin/src/main/java/com/huimv/farm/damsubsidy/controller/ImagesTest.java

@@ -36,20 +36,23 @@ public class ImagesTest {
         String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
         String path = DateUtil.format(new Date(), "yyyy-MM");
         try {
-            InputStream inputStream = image.getInputStream();
-            BufferedInputStream in = new BufferedInputStream(inputStream);
-            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+//            InputStream inputStream = image.getInputStream();
+//            BufferedInputStream in = new BufferedInputStream(inputStream);
+//            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+//
+//            byte[] temp = new byte[1024];
+//            int size = 0;
+//            while ((size = in.read(temp)) != -1) {
+//                out.write(temp, 0, size);
+//            }
+//            in.close();
+//            byte[] content = out.toByteArray();
+            //获取压缩后的图片
+            byte[] imageCom = UploadImage.getImageCom(image);
 
-            byte[] temp = new byte[1024];
-            int size = 0;
-            while ((size = in.read(temp)) != -1) {
-                out.write(temp, 0, size);
-            }
-            in.close();
-            byte[] content = out.toByteArray();
             imgname = UUID.randomUUID() + "." + filenameExtension;
-            UploadImage.resizeImage(content,0.5F);
-            UploadImage.sshSftp(content, path, imgname);
+//            byte[] bytes = UploadImage.resizeImage(content, 0.5F);
+            UploadImage.sshSftp(imageCom, path, imgname);
         } catch (Exception e) {
             e.printStackTrace();
         }