Fixing the Ability to edit iPhone Images Imported to Windows

If you’ve been plagued by the following errors ever since upgrading to iOS5:

This photo can't be saved because of a problem with the photo's file properties.
This photo can’t be saved because of a problem with the photo’s file properties.
Photo Gallery couldn't update this file: Error code: (0x80070057)
Photo Gallery couldn’t update this file: Error code: (0x80070057)

Fret no more, relief is here!

After much investigation the root cause is erroneous white-space characters in the XMP block of the image files. 

The first step to fixing this problem is to

Stop taking pictures with the volume button!

No, this is not a solution but the problem seems to happen more frequently for images taken with the volume up button than images take win the shutter release on-screen button. Therefor, avoiding the volume button seems like a good idea. Next,

Fix the Images which already have the issue!

Lots of work-arounds have been posted for when you discover the problem when editing a particular image, however; the issue may surface down the road on images you have not previously edited. For me, fixing the issue only on the images I attempted to edit was not a good solution. I wanted an all-or-nothing fix.

I’ve written a small Java utility which will scan over an entire directory (or a directory of directories, or a directory of directories of directories, etc) and fix the issue on any images which have it.  The full source code is available on Google Code (yes I still live in 2009, but at least it’s using mercurial). It will not touch images which do not have the issue.

Download jpegxmpxmltrimmer

As of this post the current version is 0.01 which essentially means:

It’s pre-production, pre-release, pre-beta, pre-alpha, pre-warranty, you-get-what-you-pay-for. /disclaimer

Run jpegxmpxmltrimmer

Assuming you already have a Java JRE installed, bring up a command prompt and enter the following command:

NOTE: This command will not edit existing files.  This is the safe mechanism to fixing your images.  Rather than fixing the originals, it makes copies and fixes the copies (named appropriately).

java -jar <path-to-downloaded-jpegxmpxmltrimmer.jar> <path-to-root-directory-of-images>

If you would like to fix the error by editing the existing files simply add a true at the end of the commandline.

That’s it.  You’ve now fixed the issue!  Yay! <insert-mini-celebration-here/>

The Catch

You’ve fixed the images with the pre-existing issue, but the bug still exists in the latest release of iOS (5.1 as of this post).

For now, you’ll have to run the utility over any files you import.  I’ve still found the issue on a few photos I’ve imported even since I stopped using the volume button.

I’ve reported the issue to Apple but haven’t yet heard back.  If you want this issue fixed permanently I suggest you do the same:

WebCam Tracker v0.9.0

For whatever reason I wanted to spend a little more time on my WebCam Tracker program by throwing a UI on top of it.  I did and it turned out reasonably well for my first foray into SWT.

3 things I would still like to do:

  1. Thread the image retrieval process.  It’s done but something happens with the output streams on the new thread which causes it to hang when System.out is called.  If I figure that out it’ll be easy to re-implement.
  2. Implement the progress bar at the bottom of the window.  It should be able to track the progress based upon the provided duration easily enough.
  3. Come up with a better widget for picking the duration and delay times.

Since I took a little bit of extra time to glossy it up a bit, there’s no sense in making it go to waste.  I threw the code & the distribution up on Google Code.  You can see it at WebCam Tracker.

Another time-lapse I did using WebCam Tracker.  Kinda neat.

Sunset over Lake McDonald

Let me know what you think, and of course I welcome any comments/feedback about the app.  Not that I’ll necessarily do anything about them… I don’t plan on spending much time on it… but I’d like to know.

Filesystem Photo Gallery

I’ve been looking for a good filesystem-based Gallery system for a while. I haven’t been able to come up with one that has the features and is as lightweight as I’d like it. Therefor I decided I’d write my own. I implemented the first version in .NET but have since ceased development and decided to move away from IIS/windows and begin using linux/apache and an external host (powweb). I also want the Gallery system to work seamlessly with WordPress and any other PHP based content management system (or blog engine). Therefor I decided to scratch the .NET version and start on a PHP based version.

I started working on my new PHP filesystem based Gallery system last night. It’s intended to be extremely lightweight with no database interaction. It will assume the first image in a directory should be the ‘thumbnail’ for that directory. It will dynamically generate thumbnails for images which do not yet have a thumbnails. This is so that they are only created once.

I’m very surprised at how fast the The system is coming together. I suspect that in a few days I’ll have a working version with most if not all of the features I’m looking for.

The only problem is I have no Idea what to call it. If anyone has any suggestions I’d love to hear them.

As soon as I come up with the name I’ll publish a google code site with all the documentation and downloading goodness.