【修改照片gps信息】向照片写入位置gps信息

文章介绍了如何通过ApacheCommonsImaging库来读取和修改照片的经纬度元数据。首先,通过Maven引入该库,然后读取图片文件,获取并操作其ImageMetadata,特别是JpegImageMetadata和Exif信息,最后更新GPS坐标并保存修改后的图片。
摘要由CSDN通过智能技术生成

向没有经纬度的照片或者需要修改经纬度的照片,写入经纬度信息。
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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值