rain
2024-06-03 28f661933ffdeb1f65ecee52f8f4b7a3b373da9b
src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
@@ -12,6 +12,7 @@
import java.util.Date;
import static com.dji.sample.territory.utils.ImgZipUtil.compressImageAndGetFile;
@Component
public class WaterMarkUtil {
    /**
@@ -25,8 +26,8 @@
     * @throws IOException 如果读取或保存图片失败。
     */
    public static File addWatermark(File file,  Long pssj, Double lat, Double lng, Double angles) throws IOException, FontFormatException {
        String angel=angle(angles);
        double anglses = convertAngle(angles);
        String angel = angle(anglses);
        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))));
@@ -63,7 +64,7 @@
        g2d.setComposite(alphaComposite);
        String extraInfo = String.format("Lon:%.7f Lat:%.7f\n%s %s", lng, lat,angel,sd);
        File fontFile = new File("/tmp/jave/MiSans-Normal.ttf"); // 替换为你的字体文件路径
        File fontFile = new File("src/main/java/com/dji/sample/territory/utils/MiSans-Normal.ttf"); // 替换为你的字体文件路径
        Font customFont = Font.createFont(Font.TRUETYPE_FONT, fontFile).deriveFont(36.00F);
        // 注册字体
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
@@ -128,39 +129,55 @@
        if (angle > 0 && angle < 45) {
            return "北偏东";
        }
        if (angle > 45 && angle < 90) {
        if (angle >= 45 && angle < 90) {
            return "东偏北";
        }
        if (angle > 90 && angle < 135) {
            return "东偏南";
        }
        if (angle > 135 && angle < 180) {
        if (angle >= 135 && angle < 180) {
            return "南偏东";
        }
        if (angle > -45 && angle < 0) {
        if (angle >= 315 && angle < 360) {
            return "北偏西";
        }
        if (angle > -90 && angle < -45) {
        if (angle > 270 && angle < 315) {
            return "西偏北";
        }
        if (angle > -135 && angle < -90) {
        if (angle >= 225 && angle < 270) {
            return "西偏南";
        }
        if (angle > -180 && angle < -135) {
        if (angle > 180 && angle < 225) {
            return "南偏西";
        }
        if (angle == 0) {
        if (angle == 0 || angle == 360) {
            return "正北";
        }
        if (angle == 90) {
            return "正东";
        }
        if (angle == 180|| angle == -180) {
        if (angle == 180) {
            return "正南";
        }
        if (angle == -90) {
        if (angle == 270) {
            return "正西";
        }
        return "未知";
    }
    public static double convertAngle(double angle) {
        // 处理负数角度,将其转换为正数
        if (angle < 0) {
            angle += 360;
        }
        return angle;
    }
    public static void main(String[] args) {
        // 测试不同的输入角度
        double[] testAngles = {25};
        for (double angle : testAngles) {
            System.out.printf("输入角度: %.1f, 转换后的方位角: %.1f\n", angle, convertAngle(angle));
        }
    }
}