![]() Registered Member ![]()
|
Hi,
I have two installations of openSUSE 12.2. One with stock KDE 4.8 and one with KDE 4.9 from KR49. On both machines I have setup kslideshow to randomly show images from my collection. A lot of these images are Canon CR2 raw files in portrait mode. Now the problem is that kslideshow presents these portrait images in landscape mode. That is, kslideshow doesn't obey to the exif rotation information. JPEG images in portrait mode are shown correctly though. digiKam shows the images rotated, so it's possible to do it. If I remember correctly the same images were displayed rotated in e.g. openSUSE 12.1 and Fedora17. Is there anything I can do to make kslideshow rotate the images? /Anders |
![]() Administrator ![]()
|
Can you please clarify what "kslideshow" is? Is this the Slideshow screensaver, or is it a separate application?
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
Yes, I mean the slideshow screensaver. Thought it was named kslideshow as the config file is named that. Sorry for that! /Anders |
![]() Administrator ![]()
|
I have examined the source code of the slideshow screensaver. It seems to be able to use KExiv2 to automatically rotate images per their Exiv data. As the name implies, KExiv2 wraps the exiv2 library. For this all to work however, it does assume that the KExiv2 library was available with development headers at compile time for kdeartwork however, which possibly may not be the case.
To confirm it was compiled with KExiv2 support, please run and post the output of this command:
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
ldd /usr/bin/kslideshow.kss | grep -i exiv libkexiv2.so.11 => /usr/lib64/libkexiv2.so.11 (0x00007fa0de3c0000) libexiv2.so.12 => /usr/lib64/libexiv2.so.12 (0x00007fa0d96f6000) |
![]() Registered Member ![]()
|
This is the output from exiv2 for two different images. The first is in portrait mode and the second is in landscape mode.
exiv2 -pt IMG_710* | grep Orientation IMG_7102.CR2 Exif.Image.Orientation Short 1 left, bottom IMG_7103.CR2 Exif.Image.Orientation Short 1 top, left So exiv2 reports the same integer value for them both but the "string" orientation differs. What does this mean? /Anders ps: Thanks for your efforts so far! |
![]() Administrator ![]()
|
Unfortunately i'm not familiar with the EXIF specification - however if libkexiv is available to KSlideshow then it should work - as it works in Digikam - and both use that library. Only thing I can think of is that Digikam has other methods for determining the proper image orientation other than the EXIF data...
Are you able to compile code? The easiest way to debug this may be by altering the code to output crucial information...
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
I did some more tesdting with exiv2 and it seems to output the correct orientation. I have built kscreensaver just to see if there were any differencies but I had the same behaviour. Any suggesions on how I can alter the code to get some good information? /Anders |
![]() Administrator ![]()
|
In a text editor open "kdeartwork/kscreensaver/kdesavers/slideshow.cpp" and head to line 902. It should show this:
Alter it so it reads like the following:
This should cause it to output a warning message indicating if the rotation was successful or not. Please note that you will either need to run it by hand - or install it system-wide and run kdeinit4 afterward.
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
Ok, I will give it a try. But how do I run it by hand? /Anders |
![]() Administrator ![]()
|
You will need to compile and install the source code - which requries executing cmake, make and make install with the correct arguments. If you are not familiar with the process, it may be better to simply file a bug.
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
I have built and installed before. I thought it was possible to not install it systemwide and then run just the screensaver. Haven't had time to build with kWarning additions yet though. /Anders |
![]() Administrator ![]()
|
Yes, you can install locally, just install it to ~/.kde4 (or ~/.kde if your distribution uses that) and run "kbuildsycoca4 --noincremental" afterward.
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
![]() Registered Member ![]()
|
Ok, I will try that. Or can I use any folder of my choice? How do I then start kslideshow from there? /Anders |
![]() Administrator ![]()
|
You can use a folder of your choice, but then you need to set KDEDIRS, PATH, LD_LIBRARY_PATH and other environment variables - before KDE is started (which is easily done using a script in ~/.kde4/env/)
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
Registered users: Bing [Bot], claydoh, Google [Bot], rblackwell