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.

Subscribe to Feeds using TwittFeeder

RSSTwitter is a great update and notification system. You can send it messages with a variety of tools including Instant Messaging, Text Messages and the Twitter website itself. Twitter’s mission statement reads:

Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

One of the most useful features about ‘new web’ is feeds. Getting updated whenever the sites you check change is probably the best enhancement to come out of the internet. No more wasting time checking sites that haven’t updated yet.

TwittFeeder asks the question: What are your favorite websites doing? It allows you to easily subscribe to feeds using twitter. Once subscribed you’ll get updates via Direct Message.

To use it first start following TwittFeeder. Once you are it will automatically start following you. When it does you can start subscribing to feeds. To do so simply send ‘subscribe http://feedurl&#8217; to twittFeeder as a direct message. If you’re using one of the standard Twitter tools this is accomplished by sending the following message to twitter:

D twittFeeder subscribe http://feedurl

That’s it! once you’re subscribed twittFeeder will start sending you direct messages using any notification system you’ve already setup in Twitter. The great thing about this service is if twitter ever adds another notification type you automatically get your feed subscriptions sent there for free.

The notification system twittFeeder uses is whatever your notifications are currently sent to by Twitter since it simply sends you the updates via a Twitter Direct Message. If you’re not a user yet you should be but the notifications currently supported are:

  • Text Message
  • E-mail
  • Instant Messages
  • Twitter website
  • Lots and Lots of 3rd party applications

To unsubscribe to a particular feed simply send ‘unsubscribe http://feedurl&#8217; as a Direct Message to twittFeeder.

Disclaimer: at the moment twittFeeder is scheduled to run every 10 minutes so updates won’t necessarily be immediate. That number might go up or down depending upon usage and several other factors.

Dynamic Categories

I determined a while ago that I wanted to reduce the clutter on my blog and eliminate most of what’s normally displayed on the front page of any blogs. However I didn’t want to lose any functionality and wanted to always have the ability to add links and categories and have lists of them that were generated dynamically somewhere. I figured that adding a page for each makes a lot of sense so I wrote a dynamic content wordpress plugin. At the moment it has 3 hard coded keyword tokens that it replaces with corresponding content. However the next release will allow you to specify a keyword token and what widget to insert in its place.

Bug Fixes

I have fixed several annoying bugs in ZippyPhotos one of which caused directories to be displayed in the wrong order. It amazes me how easy PHP is to work with every time I make a fix or add a feature.

I also added the ability to specify the number of items currently displayed in the RSS feed. Right now the default is set to 10 but like everything else in Zippy, it’s configurable via settings.php.

Zippy Photos version 1.0

well… It’s out. I’ve (probably prematurely) released Zippy Photos 1.0. The biggest problem is speed. I know I know… with a name like Zippy it should be quick. I haven’t spent a lot of time with speed improvements, I’ve mostly concentrated on features but I gurantee It’s top on the list now. I have some things to try and with some luck we’ll see a dramatic speed increase.

Zippy Photos

I’ve officially named my photo album software Zippy Phtos.  I’ve created a Google Code Page for it also.   I’ll be updating it with downloads, general usage information etc.  I’ll also be using its subversion code repository to keep the code archived as well.

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.