Ah cool! It would be awesome to have the EXIF stripping work on a stream, rather than a file.
.hc Michael Rogers: > Fantastic! > > The code is just a single file with minimal Android dependencies, so I > made a quick (untested) Java port: > > https://code.briarproject.org/akwizgran/metadata > > Cheers, > Michael > > On 26/03/18 22:32, Hans-Christoph Steiner wrote: >> >> Turns out Google released an Android Support library that makes it >> trivial to strip EXIF from JPEGs and some RAW formats: >> https://android-developers.googleblog.com/2016/12/introducing-the-exifinterface-support-library.html >> >> I found it via this app in F-Droid: >> https://gitlab.com/juanitobananas/scrambled-exif >> >> This is all it does: >> ExifInterface exifInterface = new ExifInterface(imagePath); >> for (String attribute : getExifAttributes()) { >> if (exifInterface.getAttribute(attribute) != null) { >> exifInterface.setAttribute(attribute, null); >> } >> exifInterface.saveAttributes(); >> >> .hc >> >> Michael Rogers: >>> Please feel free to use it, I place it in the public domain. I'll have a >>> look at JPEGs next time I'm procrastinating. ;-) >>> >>> (By the way, after sending I noticed a bug: if the file ends with a >>> truncated ancillary chunk, I think the cleaner will loop forever trying >>> to skip to the end of the chunk. Should be easy to fix though.) >>> >>> Cheers, >>> Michael >>> >>> On 13/12/17 13:02, Hans-Christoph Steiner wrote: >>>> >>>> That's awesome! Feeling inspired to also strip JPEGs? :-) I think >>>> they're easier. There is jhead, exiftool, and ObscuraCam's JNI code for >>>> examples. Can we use this under the GPLv3? >>>> >>>> .hc >>>> >>>> Michael Rogers: >>>>> Hi Hans-Christoph, >>>>> >>>>> I hacked this together based on the PNG specification, which >>>>> distinguishes between ancillary chunks that can be removed without >>>>> affecting the image data, and critical chunks that can't. It's been >>>>> tested on exactly two PNGs so far. :-) >>>>> >>>>> http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html >>>>> >>>>> Cheers, >>>>> Michael >>>>> >>>>> On 12/12/17 16:25, Hans-Christoph Steiner wrote: >>>>>> >>>>>> pyexiftool is just a wrapper for exiftool. exiftool looks great, but >>>>>> for my use case, I only need to strip all metadata. It would be much >>>>>> easier if that was in pure Python and pure Java. perl is a no go on >>>>>> Android. >>>>>> >>>>>> It was dead simple to strip EXIF from JPEG in Python: >>>>>> >>>>>> from pil import Image >>>>>> with open(inpath) as fp: >>>>>> in_image = Image.open(fp) >>>>>> data = list(in_image.getdata()) >>>>>> out_image = Image.new(in_image.mode, in_image.size) >>>>>> out_image.putdata(data) >>>>>> out_image.save(outpath) >>>>>> >>>>>> But that broke some PNGs, and the rest were larger in size. >>>>>> >>>>>> .hc >>>>>> >>>>>> Rick Valenzuela: >>>>>>> oh, you may already know this, but the previous code keeps a copy of the >>>>>>> file and metadata. if you want it gone with no copies, you have to add a >>>>>>> switch to overwrite, e.g.: >>>>>>> >>>>>>> ``` >>>>>>> with exiftool.ExifTool() as et: >>>>>>> et.execute(b'-all=', b'-overwrite_original', b'some.png') >>>>>>> ``` >>>>>>> >>>>>>> On 12/12/2017 23:45, Rick Valenzuela wrote: >>>>>>>> heh, nice -- I just found this: >>>>>>>> >>>>>>>> https://github.com/smarnach/pyexiftool >>>>>>>> >>>>>>>> Tried it out and it worked great: >>>>>>>> ``` >>>>>>>> with exiftool.ExifTool() as et: >>>>>>>> et.execute(b'-all=', b'some.png') >>>>>>>> ``` >>>>>>>> >>>>>>>> On 12/12/2017 19:53, Hans-Christoph Steiner wrote: >>>>>>>>> >>>>>>>>> Ah, cool, I thought exiftool only worked with JPEGs. It seems to work >>>>>>>>> with just about every image format. Now the open question is how to >>>>>>>>> strip all PNG metadata with Python and Java. >>>>>>>>> >>>>>>>>> .hc >>>>>>>>> >>>>>>>>> Rick Valenzuela: >>>>>>>>>> does exiftool do what you need? >>>>>>>>>> >>>>>>>>>> `exiftool -all= <some.PNG>` >>>>>>>>>> >>>>>>>>>> On 11/12/2017 17:57, Hans-Christoph Steiner wrote: >>>>>>>>>>> >>>>>>>>>>> Anyone know any tools for sanitizing PNGs without touching the >>>>>>>>>>> compressed image data? With JPEG it is easy to strip out EXIF with >>>>>>>>>>> python-pil or many other tools. I haven't found a simple, clean >>>>>>>>>>> approach >>>>>>>>>>> in Python for PNGs. >>>>>>>>>>> >>>>>>>>>>> .hc >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>> >> -- PGP fingerprint: EE66 20C7 136B 0D2C 456C 0A4D E9E2 8DEA 00AA 5556 https://pgp.mit.edu/pks/lookup?op=vindex&search=0xE9E28DEA00AA5556 _______________________________________________ List info: https://lists.mayfirst.org/mailman/listinfo/guardian-dev To unsubscribe, email: [email protected]
