| | |
| | | import java.util.Date; |
| | | |
| | | import static com.dji.sample.territory.utils.ImgZipUtil.compressImageAndGetFile; |
| | | |
| | | @Component |
| | | public class WaterMarkUtil { |
| | | /** |
| | |
| | | * @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)))); |
| | |
| | | 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(); |
| | |
| | | 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)); |
| | | } |
| | | } |
| | | } |