![]() ![]() Included Saver.dll in project outside of references ( /Lib/ folder) so it won't get lost.Code is unchanged.Ġ6 February 2015 - Several small updates based on Piyush Man's input, including: 11 December 2013 - Updated some notes in the article.21 October 2013 - Fixed bug were I was using Longitude in place of Latitude, terribly sorry about that.20 October 2013 - Updated with details on adding to Windows Explorer context menu.Added support for storing the map URL in a config file. 19 October 2013 - Updated source breaking most of the code into a reusable library.Extensions based on this article: // return ( new string ) String ext = (Path.GetExtension(path_to_file) ? " ") If ( String.IsNullOrEmpty(path_to_file) || !File.Exists(path_to_file)) Code to aid in identifying ExIF images public static bool IsImage( string path_to_file) Msg.Box(messages, " Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) On menu click, try to display the image locaion, or display errors if needed string messages = (selected_file) ImageLocationRootMenu.Click += new EventHandler((o, e) => ImageLocationRootMenu.ToolTipText = " Show location picture was taken on a map." Var imageLocationRootMenu = new ToolStripMenuItem( " Show Picture Location") SelectedItemPaths is a property of SharpShell's SharpContextMenu string selected_file = SelectedItemPaths.FirstOrDefault() The key piece of code to get the menu, or if not a valid picture file, null private ToolStripMenuItem GetShowImageLocationMenu() For brevity, the error handling and debugging hooks have been removed. You can read the SharpShell documentation for details, but ultimately it will entail adding a ToolStripMenuItem to the shell context menu. Since I thought someone might ask about adding this to the Windows Explorer context menu for pictures, it is easy to do with SharpShell (very cool project - thanks SharpShell team!). We launch the URL using the default browser.Note that you can alter the URL to use any other mapping site, or since you have the coordinates, you could pass that to any mapping API of your choice. After we have the Longitude and Latitude, we construct a URL to open Google Maps to that location.Once we have the GPS details, we use the Coord functions to convert them to proper Longitude and Latitude.In GeoPoint.GetFromImageFile(), we parse the image meta data for GPS details.On startup ( Program.cs), we parse the command line for the path to a valid picture file. ![]() If you would like to extend the code for your own use, focus on the two classes that encapsulate most of the work, Coord.cs and GeoPoint.cs. The code should compile and run without intervention. Some notable resources: ExIF Wiki, Google Maps API, GeoCode Conversion, Image Properties API Using the Code BackgroundĪlmost all of the code to make this happen is available elsewhere, either in MSDN or on CodeProject, this just ties all the pieces together into a usable package. To make using this easier, leave it on your desktop and drag and drop photos on to it, or wire it up as an alternative opener for photo files (see sample image). If the image does not have GPS data encoded in its metadata, or the file type passed in is not an image, a pop-up error explains the problem. Smart phones seem to do this well, but once you have copied the picture to your desktop/laptop, it is somewhat difficult to see where the photo was taken. ![]() This Windows Desktop application takes a picture as an input parameter and if that picture has GPS meta data, it will open the location that picture was taken in Google Maps (configurable to other mapping sites or applications).
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |