Windows Live Photo & Video Blog

Official blog for the Windows Live Digital Memories Experience team

October, 2008

  • Windows Live Photo & Video Blog

    Authoring a Publish Plug-in for SmugMug

    This is a guest post from Omar Shahine. When we announced an internal beta of our new Publish API a few months ago he jumped right on it and within a few days built his Smugmug plug-in. If you’re a Photo Gallery user that also happens to use Smugmug to share photos AND videos, then this plug-in is for you!  Check out the plug-ins download page (more plug-ins are coming soon). Anyway, enjoy Omar’s perspective. –Michael Palermiti 

    ~~~~~

    Hi There! My name is Omar Shahine and I’m a Program Manager on the Hotmail team. I also happen to be a photography enthusiast and long time reader of this blog. The Photo Gallery team asked if I’d blog about my experience building a Publish Plug-in for SmugMug, my photo sharing service of choice. [download Publish on SmugMug]

    Let me start out by saying that I’ve already authored an uploader for SmugMug called Send to SmugMug. This is a .NET program that I wrote many years back to simplify and streamline uploading pictures from the Windows Shell to SmugMug. It’s gotten popular over the years and I’ve added lots of features. Send to SmugMug was originally written for Windows XP, which seems like a long time ago for me.

    Why author a Plug-in?

    When Windows Live Photo Gallery was released last year I started to use it for all my photo management. Both my wife and I feel it’s the easiest product to tag, rate, and organize our photos. We have over 30,000 pictures right now and since having our first child almost 2 years ago we take a LOT of pictures and upload to them to SmugMug to share with our friends and family. In fact, we’ve developed an interesting workflow. My wife and I rate all our photos and anything with a 3 star or higher rating gets uploaded. Things with 2 star ratings we keep, but don’t share or play through our slideshow screensaver on our TV powered by Windows Media Center.

    Our basic philosophy on ratings is to use the pyramid system (where there are very few 5 star, and very many 3 and 2 star):

    • 1 star: throw away
    • 2 star: keep, but don’t share
    • 3 star: good picture, this is the majority of our ratings
    • 4 star: analog photo album quality
    • 5 star: good enough to put in a picture frame in the house or office. we have very few of these

    Why am I telling you this? Well Photo Gallery lets you easily view and filter by rating so uploading pictures with 3 stars or higher is as simple as clicking a button to filter and then publishing, something not possible in the Windows Shell.

    image

    Since we use Photo Gallery a lot, it got to be inconvenient for us to keep having to use the Windows Shell and Send to SmugMug to upload our photos. So when the Publish Plug-in SDK was sent my way a few months ago, you can imagine how excited I was to start writing some code :-).

    Authoring a Plug-in

    You might wonder how long it took me to write the Publish on SmugMug Plug-in. Not long. All in all I would say I spent 3 days working on the plug-in. The first day was mainly downloading and examining the Sample Flickr Plug-in and setting up my project in Visual Studio 2008. I spent the next day writing code and creating the installer. On the third day I created an auto-update feature and created the web pages and such to host my Plug-in.

    Of course one thing that helped me tremendously was that I already had  a bunch of code that talked to SmugMug using their API. If you are starting from scratch and have no code at all to talk to a publishing service it could take longer.

    What Publish on SmugMug does

    It’s pretty simple really. Much simpler than the Flickr Plug-in (due to the differences between Flickr an SmugMug).

    1. You select a photo, or video, or combination of any number of them.

    2. You then select Publish on SmugMug… from the Publish Menu

    image

    3. You are asked for your username and password for SmugMug

    image

    4. You then select a Gallery to upload to, or create a new one:

    image

    image

    5. You then click Publish

    image

    You can then click View to be taken to the uploaded Photo or Gallery.

    image

     

    How I wrote Publish on SmugMug

    If you are like me, then there is only one thing you need to figure this out. Just download the Sample Flickr Plug-in and start messing around! I didn’t read any of the SDK docs, although they are there if you need them. The overview doc is a good place to get an understanding of what you need to know if you have to see flow diagrams before looking at sample code.

    The basic idea for any Publish plug-in is going to be:

    1. Collect the user credentials and log into the service
    2. Create a “container” for the uploaded items or allow selection of an existing “container”. In this case a container can be an Album, Gallery, Folder etc
    3. Upload the selected items in Photo Gallery supplying any necessary meta data to the service (I provide Caption, Keywords, and People Tags).
    4. Handle progress and errors
    5. Supply a URL the user can use to visit the site when the upload is complete

    What I did was:

    1. Create my own registry entries for my Plug-in
    2. Reviewed the Flickr Plug-in to get an idea of how the call flow worked
    3. Figured out what parts of the Plug-in I needed to rip out and replace with my own code
      1. Replace the UX in the Sample with my own dialogs and screens using the default ones as a starting point.
      2. Stubbed out the functions that I would need to talk to SmugMug
      3. Replaced that code with code from my SmugMug API (which I mentioned I already wrote previously). If you are talking to a new Publish service I would recommend writing a class library to handle all the API logic
    4. Create a new installer using the built in Visual Studio Setup project and add the necessary registry entries to register the Publish Plug-in.

    The only interesting issues I ran into writing my plug-in were:

    • The API expects that you will be dealing with file streams. I had to modify my API to support passing a file stream rather than just a path to the photo.
    • The SessionXml is where state is stored, and you cannot assume that any state in your code will be persisted as Photo Gallery will invoke your code with each photo. So don’t store things in static variables expecting them to be there on each call. You can persist whatever you want in the SessionXml object.
    • If you need to store things across sessions like username and other information you can use PersistXml. I already store my stuff in the Registry so I had no use for this.
    • If you want to include People Tags with the tags in the photo on upload you must explicitly get them from SessionXml

    That’s it! I hope you enjoy Publish on SmugMug or creating your own Publish Plug-in. 

    Omar Shahine, Lead Program Manager on Hotmail

  • Windows Live Photo & Video Blog

    Straighten up!

    Have you ever found yourself fumbling for your camera to capture one of those beautiful, yet fleeting moments? Your child’s first steps, your pet’s picture-perfect pose, or the run-in with your favorite celebrity… in those moments, keeping your camera perfectly straight and steady was probably not a very easy feat. :)

    And don’t forget about those times when Mother Nature makes it just as hard to keep a steady hand… that rocky cruise across the lake, or trying to get the perfect shot of your new puppy before he knocks the camera out of your hand.

    Well, help has arrived! Now you can use the straighten photo feature in the new beta version of Windows Live Photo Gallery to correct your crooked images and help make those special photos perfect. Here’s how.

    First, select your photo and open the Fix pane by clicking the Fix button in the command bar. To straighten the photo, just click the Straighten photo button in the Fix pane, and that’s it. Your picture will automatically be straightened!

    If that doesn’t do the trick (we try, but we can’t get it exactly perfect every time), or you just want to fine-tune your photo, you can use the slider to adjust the angle. Move the slider to the right to rotate the image clockwise or to the left to rotate it counter-clockwise. Also, you can use the grid provided to help align your photo perfectly. When your photo is just the way you want it, click the Apply button. Voilá!

    An example of a picture before:

    before

    …And right after clicking Straighten photo:

    after

    We hope you enjoy this new feature. Happy straightening!

    Arwa Tyebkhan, Program Manager

  • Windows Live Photo & Video Blog

    You’ve tagged them, now here’s how to find them fast

    • 16 Comments

    If you read John’s recent post, an introduction to “people tags”,  you now know that you can quickly  tag  the faces in your photos-- using either the  contacts in your contacts list, or any name you want.  So hopefully by now you’ve played around with people tags in our beta, adding them to photos of your friends, family, and that “celebrity” you’re stalking.

    One reason you tagged all those photos is that at some point you’ll want to find some of them quickly. So, now the fun part: here’s how to do it.

    Turns out you can find photos that have a people tag pretty much the same way you find a photo with a descriptive tag.  You can use the navigation pane on the left, use the info pane on the right, or search and arrange by people tags.

    In the navigation pane (hint: left side of the window), when you select a contact or other person, you’ll see all of the photos they’re tagged in.  It’s that simple.

    findbyppl-1

    Maybe you’re more likely to browse your photos a different way.  If you’re browsing by date, for example, and you find a photo with some friends in it. If you want to find all the pictures you have that contain one of the people from that picture, select the name of that person from the pane on the right, like this:

    findbyppl-2

    The gallery will switch to the first view, with the person selected in the navigation pane and all of the pictures of them ready for your perusal.
    The third way to find people is with search.  Let me walk you through it.

    Search looks at all of the properties (or tags) of your photos, including your descriptive tags, the camera model, the author, etc.  Here I’ve selected the folder “All Photos and Videos” and then searched for “john.”  So in addition to the pictures tagged with “John,” there are a few photos with the caption “John and Fairview,”, which is the street address of the Seattle Times and the clock featured in this blog post.  And there are also some photos from a team evet that I got from John, where he’s tagged as the author.

    findbyppl-3

    After that, I would have to sort through all of these search results to figure out which ones are tagged “John.”  Kind of a pain. So, this is a great time for me to use the “arrange by” view.  Over to the left of the search box, I can arrange by several properties.  If I select Person, the people-tagged photo floats to the top.

    findbyppl-4

    Voila!  Now I can publish them, print them, fix them up, or do something creative.  My teammates will be blogging about new and old ways of doing these things over the coming weeks.

    Robert Ketcherside, Program Manager

  • Windows Live Photo & Video Blog

    Making movies is getting a lot easier (cross post)

    • 1 Comments

    Eric Doerr, he leads the Program Management team for Digital Memories (a.k.a. the Photo and Video team for Windows Live), blogged about the brand new Windows Live Movie Maker beta today over on the Windows Live “Wire”.  He covers a bit of Movie Maker history, some information about the new engine behind the scenes, rethinking the user interface, and embracing the web.  His post should help frame the direction that Movie Maker is heading in during it’s new beginning.  He also answers the question, "Where are all the features?"  Check his post out...

  • Windows Live Photo & Video Blog

    Why “people tags”?

    • 20 Comments

    We've always had keyword (descriptive) tagging in Photo Gallery. Heck, we've had it in Microsoft photo products since Windows XP. So why add a whole new type of tag to Windows Live Photo Gallery? Because people take lots of pictures of people. Think about the photos that are most special to you. Let me guess— they have people in them, right? So it makes sense for the software you use to organize your photos to help you focus on the people in them. That's what people tags are all about.

    In the beta version, you can see that once you sign in to Windows Live, we add your contacts to the navigation tree. When you click a contact, you see all the photos you've tagged of that person, as well as links to photos they're sharing with you.

    people banner

    But your contact list is just a start. Someone doesn't have to be a Messenger or Hotmail contact for you to tag them. You can tag anyone. Just click the Add a new person link, or type in a new name when you're tagging.

    If there's a face in your photo, Photo Gallery automatically finds it, which makes tagging people faster and easier. From the gallery view, you can see how many untagged people are in your photos, and follow the link to tag them. Photo Gallery can't find every face, so you can always click Add people tag to add tags yourself.

    There are a few ways to add people tags to photos. In gallery mode, you can bulk add by selecting several photos and dragging them to the person you want to tag in the navigation tree. When viewing a single photo, you can apply an individual tag to each found person by clicking the identify link in the info pane. You can also click the face of the person you want to tag.

    tag-flow

    What's unique thing about the Photo Gallery tagging system is that, like keywords, people tags are written to the file. So if you copy the photo to another computer or back up all your photos, your tags stay with the file. Because the people tags are attached to your photos, the people you share them with will be able to see your people tags. Of course, we also want to make sure you stay in control of your data, so we've added some new settings to let you manage the metadata you publish on photo-sharing sites.

    For the developers out there, the people tags are written out as XMP and, yes, you can read them. I expect folks writing publish plug-ins to take advantage of this.

    — John Thornton, Program Manager

Page 1 of 1 (5 items)