From 6ad595014ddd8578ead23116b3f9cb00f828627a Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Thu, 16 May 2024 16:27:43 +0800
Subject: [PATCH] db对接格式修改,定时器异步、水印调整

---
 src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java |   75 +++++++++++++++++++++++++++----------
 1 files changed, 55 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java b/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
index 359ab80..a952962 100644
--- a/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
+++ b/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
@@ -23,7 +23,9 @@
      * @return 添加水印并压缩后的图片文件。
      * @throws IOException 如果读取或保存图片失败。
      */
-    public static File addWatermark(File file, String path, Long pssj, Double lat, Double lng) throws IOException {
+    public static File addWatermark(File file, String path, Long pssj, Double lat, Double lng, Double angles) throws IOException {
+        String author="中图智绘无人机";
+        String angel=angle(angles);
         Long timestamp = pssj; // 例如:Unix 时间戳(以秒为单位)
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String sd = sdf.format(new Date(Long.parseLong(String.valueOf(timestamp))));
@@ -38,32 +40,27 @@
         // 创建 Graphics2D 对象以在图像上绘制水印
         Graphics2D g2d = originalImage.createGraphics();
 
-        // 设置水印文字 "国土调查云"
-        String watermarkText = "国土调查云";
-
-        // 设置水印文字样式
-        g2d.setColor(Color.WHITE); // 设置为白色
-        float alpha = 0.5f; // 设置透明度为 0.5
+        // 设置水印文字 "江西调查云"
+        String watermarkText = "江西调查云";
+        float alpha = 0.7f; // 设置透明度为 0.7
         AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
         g2d.setComposite(alphaComposite);
+        g2d.setFont(new Font("宋体", Font.BOLD, 150)); // 使用宋体字体
+        FontMetrics fms = g2d.getFontMetrics();
+        int textHeights = fms.getHeight();
 
-        g2d.setFont(new Font("宋体", Font.BOLD, 200)); // 使用宋体字体
-
-        // 设置水印位置(左上角)
-        int x1 = 400; // 左上角水印位置 x 坐标
-        int y1 = 1200; // 左上角水印位置 y 坐标
-
+        // 设置水印位置(左居中)
+        int x1 = 600; // 左边距离图片左边缘的距离
+        int y1 = (originalImage.getHeight() - textHeights) -800; // 垂直居中
         // 旋转35度角
-        double angle = Math.toRadians(35);
+        double angle = Math.toRadians(50);
         AffineTransform at = AffineTransform.getRotateInstance(angle, x1, y1);
         g2d.setTransform(at);
-
         // 绘制左上角旋转水印文字
         g2d.drawString(watermarkText, x1, y1);
-        // 设置第一个水印完毕,恢复透明度为不透明状态(透明度为 1.0)
         alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);
         g2d.setComposite(alphaComposite);
-        String extraInfo = String.format("时间:%s\nlon:%.9f lat:%.6f", sd, lng, lat);
+        String extraInfo = String.format("%s\nlon:%.9f lat:%.6f\n%s 时间:%s", author,lng, lat,angel,sd);
         g2d.setFont(new Font("宋体", Font.BOLD, 50)); // 使用宋体字体,更小的字号
         g2d.setBackground(Color.black);
         // 计算文本宽度和高度
@@ -74,7 +71,7 @@
         g2d.setTransform(new AffineTransform());
         // 设置文本位置(右下角)
         int x2 = originalImage.getWidth() - textWidth - 30; // 右对齐的 x 坐标
-        int y2 = originalImage.getHeight() - textHeight - 65; // 最底部位置 y 坐标
+        int y2 = originalImage.getHeight() - textHeight - 68; // 最底部位置 y 坐标
         // 绘制文本信息
         String[] lines = extraInfo.split("\n");
         for (String line : lines) {
@@ -95,8 +92,46 @@
             throw new IllegalArgumentException("水印图片保存失败");
         }
         float compressionQuality = 0.5f; // 0.0 - 1.0, higher value means better quality
-        File compressedImageFile = compressImageAndGetFile(originalImageFiles, compressionQuality);
-        return compressedImageFile;
+        return compressImageAndGetFile(originalImageFiles, compressionQuality);
     }
 
+    public static String angle(double angle) {
+        if (angle > 0 && angle < 45) {
+            return "北偏东";
+        }
+        if (angle > 45 && angle < 90) {
+            return "东偏北";
+        }
+        if (angle > 90 && angle < 135) {
+            return "东偏南";
+        }
+        if (angle > 135 && angle < 180) {
+            return "南偏东";
+        }
+        if (angle > -45 && angle < 0) {
+            return "北偏西";
+        }
+        if (angle > -90 && angle < -45) {
+            return "西偏北";
+        }
+        if (angle > -135 && angle < -90) {
+            return "西偏南";
+        }
+        if (angle > -180 && angle < -135) {
+            return "南偏西";
+        }
+        if (angle == 0) {
+            return "正北";
+        }
+        if (angle == 90) {
+            return "正东";
+        }
+        if (angle == 180|| angle == -180) {
+            return "正南";
+        }
+        if (angle == -90) {
+            return "正西";
+        }
+        return "未知";
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3