From 39ffdf5754b4ebca682bd3c925f7a500e8a1bbda Mon Sep 17 00:00:00 2001
From: aix <vip_xiaobin810@163.com>
Date: Thu, 08 Aug 2024 16:56:36 +0800
Subject: [PATCH] 国土调查云身份凭证token
---
src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java b/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
index 39a842b..dd75f12 100644
--- a/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
+++ b/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
@@ -1,16 +1,62 @@
package com.dji.sample.territory.utils;
+import com.dji.sample.media.service.impl.FileServiceImpl;
+
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.imageio.stream.MemoryCacheImageOutputStream;
+import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
public class ImgZipUtil {
+ /**
+ * 图片压缩
+ *
+ * @return
+ * @throws IOException
+ */
+ public static File compressImage(File inputFile, int targetSizeKB) throws IOException {
+ BufferedImage image = ImageIO.read(inputFile);
+
+ // 计算目标图片的尺寸
+ long targetSizeBytes = targetSizeKB * 1024L;
+ long originalSizeBytes = getImageSize(image);
+ double compressionRatio = (double) targetSizeBytes / originalSizeBytes;
+ int targetWidth = (int) (image.getWidth() * Math.sqrt(compressionRatio));
+ int targetHeight = (int) (image.getHeight() * Math.sqrt(compressionRatio));
+
+ // 使用ImageIO进行压缩
+ BufferedImage compressedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
+ Graphics2D graphics = compressedImage.createGraphics();
+ graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+ graphics.drawImage(image, 0, 0, targetWidth, targetHeight, null);
+ graphics.dispose();
+
+ // 将压缩后的图片写入输出文件
+ File outputFile = new File(inputFile.getParent(), "compressed_" + inputFile.getName());
+ ImageIO.write(compressedImage, "jpeg", outputFile);
+ return outputFile;
+ }
+
+ public static long getImageSize(BufferedImage image) {
+ File tempFile;
+ try {
+ tempFile = File.createTempFile("temp", ".tmp");
+ ImageIO.write(image, "jpg", tempFile);
+ long size = tempFile.length();
+ tempFile.delete();
+ return size;
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ return 0;
+ }
+ }
+
/**
* 图片压缩
*
@@ -39,4 +85,10 @@
return tempFile;
}
}
+
+ public static void main(String[] args) throws IOException {
+ String name="test/瑞金图片.jpeg";
+ File file=compressImageAndGetFile(new File("D:\\ideawork\\used-car\\src\\main\\resources\\DJI_20240712113312_0007_V_航点dkbh2_null.jpeg"),0.5F);
+ FileServiceImpl.uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", name, file, "image/jpeg");
+ }
}
--
Gitblit v1.9.3