2017-03-16 5 views
0

수정 된 값으로 태그를 다시 추가하려면 태그를 제거하려고합니다. 문제의 exif 태그는 다음과 같습니다 : GPSImgDirection하지만 새 값을 저장하지 않는 것 같습니다 (태그를 제거하거나 찾지 않는 것으로 짐작합니다)GPS 태그 값 바꾸기 [편집 EXIF]

정확하게 무엇을 잘못하고 있습니까? 나는 아파치 (WriteExifMetadataExample.java)에서 예제 파일을 따라 가려고 노력했다.

P. 는 "GPS"디렉토리에 있기 때문에 내가 필요

public static void setBearing(File f, Double bearing) 
    throws IOException, ImageReadException, ImageWriteException{ 

    try (FileOutputStream fos = new FileOutputStream(f.getParent()+ File.separator+"SUPERTMPDUMP12324231.jpg",false); 
      OutputStream os = new BufferedOutputStream(fos);) { 

     TiffOutputSet outputSet = null; 

     final ImageMetadata metadata = Imaging.getMetadata(new File(f.getAbsolutePath())); 
     final JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata; 
     if (null != jpegMetadata) { 
      final TiffImageMetadata exif = jpegMetadata.getExif(); 

      if (null != exif) { 
       outputSet = exif.getOutputSet(); 
      } 
     } 

     if (null == outputSet) { 
      outputSet = new TiffOutputSet(); 
     } 

     Rational r = new Rational(bearing);  
     final TiffOutputDirectory exifDirectory = outputSet.getOrCreateExifDirectory(); 

     exifDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION); 
     exifDirectory.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION, new RationalNumber(454349, 10000)); 


     new ExifRewriter().updateExifMetadataLossless(f, os, 
       outputSet); 
     //Replace file with new meta data 
     Files.move(Paths.get(f.getPath()+ File.separator+"SUPERTMPDUMP12324231.jpg"), Paths.get(f.getAbsolutePath()), StandardCopyOption.REPLACE_EXISTING); 
    } 

} 

답변

0

문제 발견 ... 코드의 예를 단순화하여 Rational 값에 상수 값을 설정하려면 다음

final TiffOutputDirectory exifDirectory = outputSet.getOrCreateGPSDirectory(); 

대신

final TiffOutputDirectory exifDirectory = outputSet.getOrCreateExifDirectory();