Welcome!
Gwenview is a fast and easy to use image viewer for KDE. For more information, have a look at the overview.News
Faster JPEG loading in Gwenview 2.1
Aurélien
- 2008.06.29
I have been neglecting my communication duties with regard to Gwenview for a few weeks (who said “months”?). I have been busy coding instead, which is probably a good thing. Anyway, I will try to be a bit more chatty about changes happening in Gwenview.
Let’s start with a change which should please large image shooters: Faster JPEG loading.
If you ask the upcoming Gwenview 2.1 to display a 4000×3000 JPEG image to fit in your 1280×800 screen, it divides dimensions by two and load a 2000×1500 version of the image. This is much faster and less memory intensive. For bigger images, it may divide the dimensions by 4 or even 8.
I can hear some of you wondering, so let’s try to address some of the questions you may have:
- Doesn’t it look ugly?
- The result may look a little less sharper than if the full image has been loaded and scaled down, but my experience tend to prove this is only discernible when doing side by side comparisons.
- What happen when I zoom in?
- When you zoom in to the point where the reduced image is not big enough anymore, Gwenview will load a bigger version of it. If you were looking at a image reduced by 4, it will load an image reduced by 2, or the full image if it’s not enough.
- What happen when I make changes to the image and save it?
- Whenever you make changes to the image, Gwenview loads the full image, so that it can save the changes.
- Does it work with all images?
- No, for the moment only JPEG images can benefit from this. It should be possible to implement this for other formats though.
Implementation details
This system has been implemented using Qt facilities to load scaled down images, namely QImageReader::setScaledSize(). I had to wrote my own version of the JPEG decoder though, because Qt decoder was not aggressive enough in scaling down images.
I wrote a little bench program to compare both decoders. Give it a JPEG and it loads a scaled down version of it, two times, using both decoders. The target size is 1280×800. Here is some bench output:
./imageloadbench landscape-picture-2816x2112.jpg Using Qt loader Iteration: 0 Iteration: 1 time: 2615 Using Gwenview loader Iteration: 0 Iteration: 1 time: 1092 ./imageloadbench large-panoramic-image-21121x366.jpg Using Qt loader Iteration: 0 Iteration: 1 time: 24699 Using Gwenview loader Iteration: 0 Iteration: 1 time: 4424
As you can see, it’s more than two times faster on not-so-big images, and gets even more efficient on very large ones.
If you are interested in this bench program, you can find it in kdegraphics/gwenview/tests/imageloadbench.cpp. You have to run make imageloadbench to build it.

Thumbnail bars
Aurélien
- 2008.03.29
Zooming slider
Aurélien
- 2008.03.16
By popular request, I moved the zooming actions to Gwenview status bar and introduced a zooming slider, as can be seen on this shot:
The nice thing about this change is that it removes quite a few buttons from the default toolbar. I am still not sure whether I like it or not, and would like to prettify the “zoom to fit” and “actual size” buttons. I think the button icons should be more distinct: the only difference between the current ones is a 5×5 pixel square.
I will probably play with it a bit more later. Maybe going as far as implementing the mockup mentionned in this post by Jos.

Slowly coming back to business
Aurélien
- 2008.03.12
As you may remember, I have been trying to find a Qt/KDE-related, free-software-friendly job for a while. Unfortunately it didn’t work out, so I had to resign myself to look for a more ordinary position.
After publishing my resume on a popular french job website, I got literally overflowed by consulting companies willing to hire me. I had to take my resume down after three days in order to shut off the fire hose and prevent my answering machine from segfaulting.
Of course, it’s great to feel like everyone “wants me”, but it makes for exhausting weeks made of three or four interviews a day. And I am not talking about half-hour interviews: the average interview is two hours long, and requires you to meet two or three different people.
Now I am facing an interesting problem: which employer should I choose? This is a “good problem to have”, but it’s still a problem. Most of my potential employers are consulting companies, I am having a hard time trying to find out which one would be better than the others. Any hint on that?
On Gwenview side, I am slowly getting more active now that looking for a job is becoming less time-hungry. Today I improved zooming and scrolling by throwing away most of my previous code: it seems Qt image scaling has become fast enough that it’s no longer necessary to worry about threading it. It’s not finished yet, more on that later.
I also improved the way the thumbnail view reacts with regard to thumbnail generation and scrolling. From now on thumbnail generation stops when you start scrolling the view and resumes when you are done, generating thumbnails for the newly visible images. Hopefully I didn’t introduce any regression, feedback is welcomed!

Thanks Aaron
Aurélien
- 2008.02.09
Thank you Aaron for the very nice post about Gwenview. It’s true that I, mere mortal, can’t compete with your blogging rate :-). To answer one of the comments in Aaron post: In SVN, Gwenview does feature multiple undo/redo support. No need to fill a wishlist on b.k.o!

Solutions Linux 2008 was great!
Aurélien
- 2008.01.31
I was a bit worried about the way Solutions Linux would go this year. We had no proper booth and I was expecting either no one would find us or we would have to face a mass of angry users coming to us yelling that KDE4 was worse than KDE3.5, destroyed their data, flashed the BIOS of their computers and other nasty things.
We solved the booth issue thanks to Gérard Delafond, famous former KDE booth master, now working on AILES, an association promoting free software for health-care professionals. This year, the KDE booth were indeed a “virtual booth”, hosted in the AILES booth (who said virtualizations was only for computers?).
Before leaving home, I printed an A2 sized KDE logo (more precisely, 4 A4 sheets put together with duct tape) and a fake “KDE” label to hang alongside the “AILES” label.
Sébastien Renard (coordinator of the KDE French translation team) and me were the permanent demonstrators on the booth, but we got support from Charles de Miramon, Gaël Beaudoin and a few others. I was also very happy to meet Helio Castro for the first time.
I think the most asked question we got was “Can you show me KDE4?”. People were very pleased with what they saw and most of them had no problems with the fact that KDE 4.0 is for enthusiast users willing to try something new, and that they should not expect a drop-in replacement for their KDE 3.5 desktop.
I usually got visitors interested with Plasma + KWin. KWin is great to get people hooked. I continued with Dolphin and Gwenview or Okular. It was fun to demonstrate the new Gwenview without telling visitors I was actually its author. This way I got objective reactions to the application.
Quite a few of them leaved the booth saying they would give KDE4 a try at home. Not all of them were current KDE users.
On the last day, we had quite some fun demonstrating Plasma with the Fluffly Bunny Plasma background
PS: Thanks to our booth neighbor traduc.org for sharing their food with us on the last day! Now we can say KDE actually eats all available resources ![]()

In case you missed it, KDE 4.0.0 is out!
Aurélien
- 2008.01.13
So it’s here, KDE 4.0.0 is out. This release has a special meaning for me: it’s the first one to include Gwenview in the kdegraphics module. This means it’s also the first time a new version of Gwenview is released without me building and uploading tarballs and announcing them on various sites, thanks to the KDE release team.
I can feel KDE 4.0.0 is out by looking at my Bugzilla mail folder… the number of unread messages is growing, time to do some bug triage.

Thumbnail shadows
Aurélien
- 2007.11.11
I have been working on improving the thumbnail view appearance lately. I recently added shadows behind thumbnails. It currently looks like this:
![]()
I am not totally happy with the shadow generation code. It uses Qt radial and linear gradients, but they do not align exactly (have a look at the corners with KMag to see what I mean). Any idea for a smarter way to generate shadows?

Rotation 2.0
Aurélien
- 2007.10.13
A few days ago I committed a feature I have been wanting for a long time in Gwenview: rotating images directly from the thumbnail view. It works this way: when you move your mouse over a thumbnail, a small button bar appears. This button bar contains three buttons: save, rotate left and rotate right.
Mandatory screenshot:
![]()
It should be very handy to quickly fix the orientation of a set of images you just imported from your camera.
I played a bit with Qt stylesheets to produce the button bar. I think it looks nice, but the hardcoded black color might be out of place depending on your choice of thumbnail view background color and your desktop colorscheme. If you feel like improving it, the CSS rules are defined in thumbnailview.cpp, around line 78 (maybe I should move the CSS to a data file instead of hardcoding them in the source code).



