From: John R. <jr...@ce...> - 2011-06-14 17:45:47
|
On Jun 14, 2011, at 9:45 AM, Nick Hall wrote: > > > On 14/06/11 17:25, John Ralls wrote: >> On Jun 13, 2011, at 11:55 PM, Benny Malengier wrote: >> >> >>> The reply of Rob for the entire list. >>> >>> Hope that clears up the dependencies. >>> >>> About jpg, apparently Rob choose to use that. He suggests to do png perhaps. Any suggestions to him what is best and how to set this (an options, just one default, ...). >>> >>> Benny >>> >>> ---------- Forwarded message ---------- >>> From: Rob Healey >>> <rob...@gm...> >>> >>> Date: 2011/6/14 >>> Subject: Re: [Gramps-devel] package dependency changes for version 3.3.0 >>> To: Benny Malengier >>> <ben...@gm...> >>> >>> >>> >>> Dear Benny: >>> >>> Hello, and how are you doing today? >>> >>> On Sun, Jun 12, 2011 at 1:14 PM, Benny Malengier >>> <ben...@gm...> >>> wrote: >>> >>> >>> 2011/6/12 Duncan Lithgow >>> <dun...@gm...> >>> >>> 2011/6/12 Nick Hall >>> <nic...@ho...> >>> : >>> ... >>> >>>> It uses convert to convert images into jpeg format and to remove exif tags >>>> from images. If it is not present, the convert functionality will not be >>>> available and the delete functionality will use the pyexiv2 library instead. >>>> >>> Yes, Nick, is correct! Only if the ImageMagick and jhead are installed will some of the extra functionality become available to the user! >>> >>> ... >>> >>>> I'm not sure why we can't just use pyexiv2 to remove tags. At the moment >>>> the ImageMagick convert is used if available. In addition jhead is called, >>>> if available, to remove all non-image related sections from the jpeg. >>>> Again, Rob should be able to clarify this. >>>> >>> Yes, ImageMagick is used a lot if it is available and found on the system. The convert program from IM, is a very easy to use software with no user interaction necessary except for pressing a button. >>> >>> Jhead is used for erasing exif metadata, and for re-initializing the exif metadata headers once the exif metadata has been removed... >>> >>> Rob, anyone, why are we removing any information from images? How is Gramps to know if I want that info there? Also why would we encourage using jpg format - is a lossy format and therefore often not really appropriate for archival image files. >>> >>> As stated earlier, the software doesn't removing any information or exif metadata without the user choosing to do it. The user is also given a warning dialog to make sure that they understand what is happening and they can cancel it if they want to! >>> >>> The only reason that I chose to convert images to jpeg, it is the most widely used format for storing Exif metadata! I could change it to converting to .png format if you think it would be a better option? >>> >>> >>> Excuse me if I'm wildly ignorant of this exif tool, I haven't tried it yet. >>> >>> Yes, you should try it. >>> You see an image and the exif data. It's not we who add jpg, it is the user. You can change the exif data if you click some buttons and enter some things. Pretty straightforward. >>> >>> If you are going to make the attempt to try it, I would do it in trunk as it has the easiest editing interface! >>> >>> Please let me know what you think! >>> >>> I am not sure how much you know about exif metadata, but most modern camera and cell phones add extra information about the image hidden inside the image! This information is called Exif metadata... >>> >>> This information that can be held within can be changed and saved back to the image. It can be completely removed also... >>> >>> Also within the image, a thumbnail(s) can be held as well. This hidden information can increase the size of the image. Especially the hidden thumbnails... >>> >>> One of the greatest things that can be stored within an image is the GPS Latitude/ Longitude Coordinates. These coordinates can be read and referenced to show where the image was taken using the Geography system already in use in Gramps! >>> >>> This is one of my next challenges that I would like to accomplish... >>> >> The Exiv2 library supports most image file types, so Gramps should, too: If *and only if* the user wants to edit metadata on an unsupported type should Gramps *offer* to convert to a supported type, and present the user with a listbox to select the type. Preference, if any, should be TIFF, the industry standard format for lossless image storage (and, by the way, where EXIF originated). >> >> What does jhead do that Exiv2 doesn't? >> > > Rob uses it to delete all non-image sections from jpeg files. > > The documentation for jhead can be found here: > http://www.sentex.net/~mwandel/jhead/usage.html > > From the link above: > "-purejpg Delete all JPEG sections that aren't necessary for rendering the image. Strips any metadata that various applications may have left in the image." > > I think it only works for jpeg files. Perhaps we need to think more carefully about the functionality for 3.4? > > The current version in branch33 does not use ImageMagick or jhead, so we don't need them as dependencies at all. Which can be accomplished with Exiv2::Image:writeMetadata() and empty metadata objects. [1][2] Works for all supported metadata types. The pyexiv2 bindings don't provide the "clear" functions, but jhead doesn't support python at all, so ISTM it makes more sense to use the Exiv2 C++ directly than to use jhead C when the latter is much less capable. Shouldn't Rob be explaining this for himself? Regards, John Ralls [1] http://www.exiv2.org/doc/classExiv2_1_1Image.html [2] e.g. void clear_filename(std::string path) { Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); image->readMetadata(); image->clearExifData(); image->clearIptcData(); image->clearXmpData(); image->clearComment(); image->writeMetadata(); //image, being a std::autoptr, will be destroyed when it goes out of scope } |