commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Piotr Czajka <ptrcza...@gmail.com>
Subject [sanselan] Removing GPS tags problem
Date Sat, 01 Dec 2012 17:08:11 GMT
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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message