{"action":"created","issue":{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/78","repository_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor","labels_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/78/labels{/name}","comments_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/78/comments","events_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/78/events","html_url":"https://github.com/JimBobSquarePants/ImageProcessor/issues/78","id":42112385,"number":78,"title":"Exif Tag Support","user":{"login":"phillip-haydon","id":895629,"avatar_url":"https://avatars.githubusercontent.com/u/895629?v=3","gravatar_id":"","url":"https://api.github.com/users/phillip-haydon","html_url":"https://github.com/phillip-haydon","followers_url":"https://api.github.com/users/phillip-haydon/followers","following_url":"https://api.github.com/users/phillip-haydon/following{/other_user}","gists_url":"https://api.github.com/users/phillip-haydon/gists{/gist_id}","starred_url":"https://api.github.com/users/phillip-haydon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phillip-haydon/subscriptions","organizations_url":"https://api.github.com/users/phillip-haydon/orgs","repos_url":"https://api.github.com/users/phillip-haydon/repos","events_url":"https://api.github.com/users/phillip-haydon/events{/privacy}","received_events_url":"https://api.github.com/users/phillip-haydon/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/labels/core","name":"core","color":"682079"},{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/labels/enhancement","name":"enhancement","color":"009800"},{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/labels/help%20needed","name":"help needed","color":"207de5"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/milestones/1","html_url":"https://github.com/JimBobSquarePants/ImageProcessor/milestones/Core%20V1","labels_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/milestones/1/labels","id":1039931,"number":1,"title":"Core V1","description":"A cross platform super-duper edition.","creator":{"login":"JimBobSquarePants","id":385879,"avatar_url":"https://avatars.githubusercontent.com/u/385879?v=3","gravatar_id":"","url":"https://api.github.com/users/JimBobSquarePants","html_url":"https://github.com/JimBobSquarePants","followers_url":"https://api.github.com/users/JimBobSquarePants/followers","following_url":"https://api.github.com/users/JimBobSquarePants/following{/other_user}","gists_url":"https://api.github.com/users/JimBobSquarePants/gists{/gist_id}","starred_url":"https://api.github.com/users/JimBobSquarePants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JimBobSquarePants/subscriptions","organizations_url":"https://api.github.com/users/JimBobSquarePants/orgs","repos_url":"https://api.github.com/users/JimBobSquarePants/repos","events_url":"https://api.github.com/users/JimBobSquarePants/events{/privacy}","received_events_url":"https://api.github.com/users/JimBobSquarePants/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":27,"state":"open","created_at":"2015-03-26T12:46:04Z","updated_at":"2016-08-04T06:15:54Z","due_on":null,"closed_at":null},"comments":15,"created_at":"2014-09-06T08:57:09Z","updated_at":"2016-08-13T09:10:52Z","closed_at":null,"body":"Starting discussion on Exif tag support.\r\n\r\n*Sorry this is late, been busy at work and I wrote up 3/4 of a post then my pc crashed and now need to start again. Will add to the list as we discuss.*\r\n\r\n*I'm currently finding lots of  photos  to test with from different camera and phones, will add to this issue as we discuss*\r\n\r\n### Problems:\r\n\r\nI've been trying MANY different libraries to read Exif tags, almost all libraries supply an enum to get a tag. However they aren't helpful.\r\n\r\n1) Only supplying an enum requires you to know what the Exif tag is and what its data type is. This can cause problems if a photo is showing you an int value, you assume its int, parse it out, then get exceptions when you find out it is actually a double.\r\n\r\n2) The list is in complete and doesn't even give you information about the full list (link in resources)\r\n\r\n3) The data types that Exif stores and the values the user would display are different. For example an Exif may have a value of 0.125, but does not tell you the fraction is 1/8 (or there about) \r\n\r\n### Libraries used:\r\n\r\n- http://www.nuget.org/packages/photo.exif/\r\n- http://www.nuget.org/packages/ExifLib/\r\n- http://www.nuget.org/packages/ImageResizer\r\n\r\nphoto.exif does not remove null line endings so you end up persisting strange characters in the database and when rendered to a browser it shows a square. \r\n\r\nExifLib works pretty well but it uses an enum, and is prone to throwing exceptions. If a file does not contain Exif data at all, it throws, it should be graceful and return an empty collection...\r\n\r\nImageResizer I thought had Exif support but it actually only strips Exif data...\r\n\r\n### Resources:\r\n\r\nhttp://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\r\n\r\n### Ideas:\r\n\r\n- When resizing files Exif data is usually lost, would be good to copy that into the new file if the user requests to do so.\r\n- Possible use of a contract to define each Exif attribute, allowing the user to implement their own if we don't implement all, giving a single simple API to work with Exif data without having to fall back to `ushort` values to query specific attributes."},"comment":{"url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/comments/239611308","html_url":"https://github.com/JimBobSquarePants/ImageProcessor/issues/78#issuecomment-239611308","issue_url":"https://api.github.com/repos/JimBobSquarePants/ImageProcessor/issues/78","id":239611308,"user":{"login":"dlemstra","id":10426229,"avatar_url":"https://avatars.githubusercontent.com/u/10426229?v=3","gravatar_id":"","url":"https://api.github.com/users/dlemstra","html_url":"https://github.com/dlemstra","followers_url":"https://api.github.com/users/dlemstra/followers","following_url":"https://api.github.com/users/dlemstra/following{/other_user}","gists_url":"https://api.github.com/users/dlemstra/gists{/gist_id}","starred_url":"https://api.github.com/users/dlemstra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlemstra/subscriptions","organizations_url":"https://api.github.com/users/dlemstra/orgs","repos_url":"https://api.github.com/users/dlemstra/repos","events_url":"https://api.github.com/users/dlemstra/events{/privacy}","received_events_url":"https://api.github.com/users/dlemstra/received_events","type":"User","site_admin":false},"created_at":"2016-08-13T09:10:52Z","updated_at":"2016-08-13T09:10:52Z","body":"Just pushed another pull request for this: #450."}}
{"actor":{"display_login":"dlemstra"}}