Professional Photo Management with the Power of Open Source

GSoC: Non-destructive image editing for digiKam

by Martin Klapetek

Hello to all the great KDE people and especially digiKam fans!

My full name is Martin Klapetek, but everyone calls me Marty and I can be found on most services like IM or IRC by the name mck182. I'm 22 and I'm from Czech republic and ever since I started with Linux, I immediately become a huge fan of KDE (3.5 back then). I'm a terrible musician (playing guitar, bass guitar, sometimes even piano [you don't want to be there]), promising art painter and hopefully-soon-to-be graduated college student with bachelor's degree in Computer Science.

I've been accepted to this year's Google Summer of Code with project to enable non-destructive image editing and image versioning for digiKam.

I'm very keen on taking photos and I've been using Google's Picasa for organizing the quantum of pictures I've taken. But the Linux version was more and more unusable lately for me, mainly because problems with multilibs (I'm running 64bit system and Picasa needs 32bit Qt libs and I'm using non-official-distro Qt packages, so there were some conflicts) and also because I hate it's wine-ish look & feel (& speed) and non-integrationess. So I've decided to use something more KDE fashioned and the sight was set on digiKam.

I like Picasa's possibility to edit your images in any way and then anytime you come back and feel like it's not good enough, you can simply reset the image to its original state and start over. This is the feature I'd like to bring to digiKam during this summer. This will go along with feature for having multiple versions with different modifications of one image and easily switching between them.

The non-destructive editing will work fully automatized. Now when you do some changes eg. use some filters or adjust levels, you need to save your image first and if you just save, you lose the original. With the non-destructive editing, it will automatically create new version from the original and it will store all the changes there, all without bothering user about saving the image and without actually touching the original. Every time you switch to the original and start new modifications, it will create another version alongside with the first one. Each version will also be manually forkable to another new version.

That's in short my project for GSoC 2010. I'm very excited to finally do some real work for KDE and to contribute to the world of open source. I'm looking forward to work with the already-shown-to-be-awesome people from digiKam team and especially with Marcel Wiesweg, my mentor :)

I wish happy coding and lots of fun to all the accepted students. Let's make KDE proud of us :)


PS: More detailed posts will come when the real work will start ;)


I've actually avoided using a lot of the features before, not knowing if they were destructive or not (eg image rotate) and whether they required recompression if using a lossy format. I'm thrilled to hear your application got accepted, and look forward eagerly to seeing how you go. Congratulations on getting your proposal accepted. Have fun. Code hard. Release early and often! :)



The development will take place in KDE's SVN, so if you're skilled enough to build on your own, you can have the changes running almost instantly ;) Although SVN mostly equals to "unstable" (simply bleeding edge), so be advised :)


Congrats for your nomination...
Please make digikam a better place to hold and rework photos ;)

I think the hard part of the job will be to find a nice UI to group photos that are edits (crop, colors, ...) from another one...

I also wish there were a way to handle raw and theres "developpements" or photo that look the same (like 10 shots of the same mountain from the same point of view)...

Good luck with your work


Thank you!

There is also some plans with versioning development from RAW images ;) But the UI changes are still a subject of discussion. But I'll try to post some mock-ups as soon as we figure something out, so stay tuned ;)

Image versioning would be a

Image versioning would be a really cool feature for digikam. All the best and happy coding!

Hopefully I'll manage to

Hopefully I'll manage to finish it in a perfect usable state, that's my goal :)

Great news!

Hey, congrats Marty!!!

I've been a digiKam user for a couple of months now, even though I'm on GNOME, since it's so much superior to F-Spot in features. But I couldn't understand how digiKam could still miss a feature that F-Spot has had for years!!! You can't know how happy your project makes me!!! :-)

What would be great is for the different versions and the original to be "stacked" together, and only have one of them shown in the thumbnails view, with some menu to choose which one is shown. You may want to take a look at F-Spot to understand what I'm talking about.

Anyway, good luck with your project!


Yeah, I've checked F-Spot to see the feature in work before this application and the idea is something like that, have only one image shown among thumbs, but when shown, show also the stack of all versions. But I need to discuss this a little bit more with the mentor, especially the UI changes. I'd like to bring KDE Usability team into this.

Thanks, comments like these are awesome motivation! :)

Thanks Marty, that's what I'm

Thanks Marty,

that's what I'm waiting for since I got in contact to linux and digikam two years ago. For me, lack of versioning is the most important item why I'm still using Photoshop Elements on Windows (other items are real albums and easily moving the files to another folder but still keeping them in the same place of the browser).

If you're reaching your goal, I finally could get rid of windows and dualboot.

All the best!

great news

I'm using digikam since about 2 years for organizing all my pictures and i really like the handling of IPTC tags, Exif's, categories and all the other stuff in the sidebar which makes it easy to organize also a huge amount of photos.
But i didn't like the picture editor showfoto. I also realy would love a feature which makes multiple version editing possible and i really would like to have it integrated in the UI so thumbnails can be grouped.
Another point i would like to mention is the workflow in showfoto. In my oppinion a UI like rawtherapee has, is much more useable for improving photos becouse you can easily switch between main editing tools like exposure correction, color, sharpening/denoising and cropping/rotaton, which are allways shown in the sidebar. Maybe the UI of rawtherapee 3.0 could be inspiring for you to create beside a really powerful image organizing tool a great image editing tool.

good luck


(I'm sorry for my bad english)


Congratulations !

This is the main missing feature of DigiKam, I am looking forward for your implementation !


Good idea, but...

Hi, I think non-destructive image editing is really good most times but sometimes I just want to rotate an image and write over the old one, will the gui allow this?
Anyway thanks for your work :)

It's already available


What you're asking can already be done in DigiKam 1.0's thumbnails view. Hover with the cursor over a thumbnail, and on the top right corner, two arrows appear. You click on either one and bingo! your image is rotated to the left or to the right. It's pretty fast!

Hi congrats to being accepted


congrats to being accepted to GSOC!

As for the new feature, it would be great if one could turn it on and off easily. The reason is that not all users of DigiKam might need or want it: I, for example, mostly rotate and do some quick standard improvements to my pictures, but I rarely do major changes/ experiments. I don't want the program to save a version of every change, I feel it would just clutter up my hard drive. In fact, that is one of the reasons I moved away from Picasa!! I prefer saving the changes myself when necessary (and give the file a meaningful name on the way) than have the program do it for me all the time. I could imagine that there are many users of this type: so experienced and independent that they do save files when necessary, but not professional enough to need many different versions and nondestructive editing.

I also agree with previous posts that a good UI is crucial.

Have fun coding, and please do the best you can!

Thanks for all your efforts!


not necessary to worry

Hi Daniel.

It is not necessary to worry about effect of non-destructing editing to space on your hard drive.

The huge advantage of non-destructing editing is that you do not have to make any backup copy (in case you really need original picture) of your files when you are editing them.

I have modified picture using Picasa to show you what information is added.
This is example of full record you may find on .picasa.ini file on folder where modified picture is stored:

There has been no changes on photo (it is idea of non-destructing editing), I suppose only thumbnail (preview picture) in album has been changed in order to display thumbnails as fast as possible. No copies of photo has been made.

Please correct me if I am wrong.

Thanks for your detailed

Thanks for your detailed reply!

It's been a while since I last used Picasa, so I don't know how it works today (it used to store several copies of the same photo, and that sucked). What you write sounds like a good solution, but I still have a question: if the .ini file in the folder is lost, then all changes to all pictures are lost? I mean, these files are often hidden, and one might accidentally delete it; or if I copy the photos onto another medium without copying the [picasa].ini, then the new medium only has the original photos without modifications? How does it work if I send the photo by email?

Thanks for your answer - I hope I am helping in pointing out what worries/troubles medium-experienced DigiKam users might have.



Yes, all changes are lost,

Yes, all changes are lost, except cropping and maybe rotating (not sure with this one). Cropping is done by making a backup copy of the original. The .ini file is just one per folder, so if you're moving whole folder, you're fine, but moving one image will lose its changes. But you lost your changes even when opening with win picasa. Especially cropping is completely misplaced. I don't know how about today, but this happened to me 6 months ago, when I though, that the format has to be the same. Appereantly, it wasn't.

I used to make changes to some images in Picasa and then exported the pictures I wanted to move around, upload, email etc. to another folder. Picasa handles this very nicely, it won't duplicate the pics in your library, but instead, it will put this folder under "Exported" category and you can browse them separately in there.

Thanks again for your quick

Thanks again for your quick and detailed reply.

I am not sure, but I could imagine that one of the most standard use cases for digikam looks like this: (i) shoot a lot of photos at a party / on holiday; (ii) check, select, and do most important improvements to photos, all of this in a relatively efficient and quick way; and (iii) share with friends (who were on holiday or on party or just wanna see the pics), either by email, online service, or portable storage - those people usually won't use digikam.

In this case, I wouldn't want to have to export first so that changes are saved, it's an additional step and in the end does clutter up my hard drive. So it would be really nice if either non-destructive image editing was optional (e.g. an option in settings) or if there was a an intuitive way to do and save changes the old-fashioned way as well.

What do you (and others) think?



why not do this in a similar

why not do this in a similar way to lightroom or aperture. Save the changes in a database that can be saved copied or moved. This way there is only one file to keep track of and not 380,000 as in my catalog.


Congrats, Martin! :) And thanks! :)
digikam is my favourite image-software and with this dream feature (for me) it will become just marvellous!
I am very happy about this project and wish you good luck and happy hacking! :)

What about editing done with other programs?

I am delighted to hear about this feature, which is the one thing I missed from f-spot. I wonder will it be possible to edit a photo in another program and these changes also to be non-destructive? For instance, I prefer Gwenview's red eye removal tool to Digikam's and often use Digikam to open an image in Gwenview and edit it there - would these changes be non-destructive? Likewise, many users like to open images in GIMP for editing - would these changes be non-destructive? I know f-spot allows for non-destructive editing with other programs - will this also be the case for Digikam?

Also, will audio and video files be able to be opened and edited in external programs and saved non-destructively?

Thanks again for the marvellous work you and the other developers are doing on Digikam - it is much appreciated.