向没有经纬度的照片或者需要修改经纬度的照片,写入经纬度信息。
maven引入commons-imaging包,如下:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-imaging</artifactId>
<version>1.0-alpha3</version>
</dependency>
commons-imaging官网:https://commons.apache.org/proper/commons-imaging/whyimaging.html
示例:
public static void commonsImagingUpdateImg(String pathFile){
try {
//读文件
File file = new File(pathFile);
//获取ImageMetadata对象实例
ImageMetadata metadata = Imaging.getMetadata(file);
//强转为JpegImageMetadata
JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
//获取TiffImageMetadata
TiffImageMetadata exif = jpegMetadata.getExif();
//转换为Tiff的流
TiffOutputSet out = exif.getOutputSet();
//获取TiffOutputDirectory
TiffOutputDirectory exifDirectory = out
.getOrCreateExifDirectory();
System.out.println("exifDirectory:"+exifDirectory);
//经纬
double longitude = 103.1665894181; // 74 degrees W (in Degrees East)
double latitude = 28.1988415456784; // 40 degrees N (in Degrees
out.setGPSInDegrees(longitude, latitude);
// 高
TiffOutputDirectory gpsDirectory = out.getOrCreateGPSDirectory();
gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);
double alt = 2139.51;
gpsDirectory.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(alt));
//新建输出流保存文件
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\testResult\\C\\demo3.jpg"));
//写图片
new ExifRewriter().updateExifMetadataLossless(file, bos, out);
} catch (ImageReadException | IOException | ImageWriteException e) {
e.printStackTrace();
}
}