java 获取图片经纬度
时间: 2023-10-11 14:18:32 浏览: 90
在 Java 中,可以通过使用 ImageIO 类库读取图片的元数据信息,然后从中获取图片的经纬度信息。
以下是一个简单的示例代码,可以读取一张图片的经纬度信息:
```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;
public class ImageGeoTagging {
public static void main(String[] args) throws Exception {
File file = new File("image.jpg");
BufferedImage image = ImageIO.read(file);
IIOMetadata metadata = ImageIO.getMetadata(image);
IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree("javax_imageio_jpeg_image_1.0");
IIOMetadataNode jfif = (IIOMetadataNode) root.getElementsByTagName("app0JFIF").item(0);
double latitude = 0.0;
double longitude = 0.0;
if (jfif != null) {
String lat = jfif.getAttribute("Latitude");
String latRef = jfif.getAttribute("LatitudeRef");
String lon = jfif.getAttribute("Longitude");
String lonRef = jfif.getAttribute("LongitudeRef");
if (lat != null && latRef != null && lon != null && lonRef != null) {
latitude = convertToDegree(lat);
if ("S".equals(latRef)) {
latitude = -latitude;
}
longitude = convertToDegree(lon);
if ("W".equals(lonRef)) {
longitude = -longitude;
}
}
}
System.out.println("Latitude: " + latitude);
System.out.println("Longitude: " + longitude);
}
private static Double convertToDegree(String value) {
String[] array = value.split(",", 3);
Double degree = Double.parseDouble(array[0]);
Double minute = Double.parseDouble(array[1]);
Double second = Double.parseDouble(array[2]);
return degree + (minute / 60) + (second / 3600);
}
}
```
这个示例代码假设图片是一张 JPEG 格式的图片。它首先使用 ImageIO 类库读取图片,并获取图片的元数据。然后,它从元数据中提取图片的经纬度信息,将其转换为度数格式,并输出到控制台。如果图片中没有经纬度信息,输出的经纬度默认为 0.0。
阅读全文