commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Damjan Jovanovic <damjan....@gmail.com>
Subject Re: [sanselan] Removing GPS tags problem
Date Tue, 04 Dec 2012 04:06:06 GMT
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 <ptrczajka@gmail.com> 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: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message