Which unrelated tags are removed? From my tests, that code only changes directory offsets (eg. "ExifOffset" and "InteropOffset"), but doesn't remove anything.
Damjan On Sat, Dec 1, 2012 at 7:08 PM, Piotr Czajka <[email protected]> wrote: > Hi, > I have a problem with removing gps data from photo. > It's works but also other tags unrelated with gps are removed > > code : > > > public void removeExifTag(File jpegImageFile, File dst) throws > IOException, ImageReadException, > > ImageWriteException { > OutputStream os = null; > try { > TiffOutputSet outputSet = null; > > // note that metadata might be null if no metadata is found. > IImageMetadata metadata = Imaging.getMetadata( > jpegImageFile); > JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata; > if (null != jpegMetadata) > { > // note that exif might be null if no Exif metadata is found. > TiffImageMetadata exif = jpegMetadata.getExif(); > > if (null != exif) > { > // TiffImageMetadata class is immutable (read-only). > // TiffOutputSet class represents the Exif data to write. > // > // Usually, we want to update existing Exif metadata by > // changing > // the values of a few fields, or adding a field. > // In these cases, it is easiest to use getOutputSet() to > // start with a "copy" of the fields read from the image. > outputSet = exif.getOutputSet(); > } > } > > if (null == outputSet) { > // file does not contain any exif metadata. We don't need to > // update the file; just copy it. > IoUtils.copyFileNio(jpegImageFile, dst); > return; > } > > { > // Example of how to remove a single tag/field. > // There are two ways to do this. > > // Option 1: brute force > // Note that this approach is crude: Exif data is organized in > // directories. The same tag/field may appear in more than one > // directory, and have different meanings in each. > > // outputSet.removeField(ExifTagConstants.EXIF_TAG_GPSINFO); > > // Option 2: precision > // We know the exact directory the tag should appear in, in this > // case the "exif" directory. > // One complicating factor is that in some cases, manufacturers > // will place the same tag in different directories. > // To learn which directory a tag appears in, either refer to > // the constants in ExifTagConstants.java or go to Phil Harvey's > // EXIF website. > > TiffOutputDirectory gpsDirectory = outputSet.getGPSDirectory(); // > <----------------------------------- > if (null != gpsDirectory) > { > gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE); > gpsDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE); > > } > } > > os = new FileOutputStream(dst); > os = new BufferedOutputStream(os); > > new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os, > outputSet); > > os.close(); > os = null; > } finally { > if (os != null) > try { > os.close(); > } catch (IOException e) { > > } > } > } > > I want to remove only gps position information from photo --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
