1.首先这是个很奇怪的需求,网上的案例很少,传播很广的一个案例还必须使用jdk1.5版本,更改jdk很麻烦。
2.分析了很多源码,最后找到一个apache出品的jar包,具体上没人用的jar,解决了这个问题。
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-imaging --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-imaging</artifactId> <version>1.0-alpha1</version> </dependency> |
首先引入maven工程或者下载jar包
其次抛代码,注释写的很清楚,大家看看,可以看懂的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | @Test void test1(){ try { //读文件 File file = new File("D:\\demo.jpg"); //获取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(); //移除拍摄时间 exifDirectory.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL); exifDirectory.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_DIGITIZED); //初始化当前时间 //String date = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").format(new Date()); //添加拍摄时间,格式为yyyy:MM:dd HH:mm:ss exifDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL, "1999:01:01 01:01:01"); exifDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_DIGITIZED,"1999:01:01 01:01:01"); //新建输出流保存文件 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\demo1.jpg")); //写图片 new ExifRewriter().updateExifMetadataLossless(file, bos, out); } catch (ImageReadException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ImageWriteException e) { e.printStackTrace(); } } |
如有疑问或者需要交流的,可以留言或者私聊。