Summary: | autorotate does not work | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | David Holm <wormie> |
Component: | Import-PostProcessing | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | beschindler, caulier.gilles, lure |
Priority: | NOR | ||
Version: | 0.9.0 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 0.9.3 | |
Sentry Crash Report: |
Description
David Holm
2007-02-16 09:37:50 UTC
What kind of camera do you have? Does it have orientation sensor and has orientation presented in Exif? It works here on Canon G3 and 400D with 0.9.1 on Kubuntu Feisty. I have a Panasonic Lumix DMC-FX7 which does have an orientation sensor. As I wrote the autorotate works with the Kipi Autorotate plugin but NOT while downloading the images... I have a Canon PowerShot S3 IS, and the autorotate does not work for me either. It says "rotating" while downloading the images, but inside DigiKam the images are not rotated. In addition, when I manually rotate the images inside DigiKam, it behaves strangely. The result of first manual rotation of an image is what it would have been if DigiKam had rotated the image correctly. So if the EXIF data says the image should be rotated 90 degrees, DigiKam shows it unrotated, but if I do a manual 90 degree rotation then suddenly the image is rotated 180 from the original unrotated image! I have this bug as well - Canon Powershot S2... I investigated a bit further and found this: Size of Exif metadata from camera = 10238 digikam: Exif header found at position 4 digikam: Exif autorotate: IMG_2789.JPG using (/home/benjamin/images/2007/Verschiedenes/.digikam-camera-tmp1-18185) digikam: ExifRotate: not a JPEG file: /home/benjamin/images/2007/Verschiedenes/.digikam-camera-tmp1-18185 digikam: Dirty: /2007/Verschiedenes digikam: Dirty: / Looking at the code, it seems that this function here fails: bool isJpegImage(const QString& file) { // Check if the file is an JPEG image KFileMetaInfo metaInfo(file, "image/jpeg", KFileMetaInfo::Fastest); if (metaInfo.isValid()) { if (metaInfo.mimeType() == "image/jpeg") return true; } return false; } it seems that the metaInfo code does not work properly I have tested the patch we talked about on irc - using the newest svn version and rotate works there. Luka, This is my chnages in svn to fix the problem: http://websvn.kde.org/branches/extragear/kde3/graphics/digikam/libs/jpegutils/jpegutils.cpp?r1=675592&r2=686179 Feel free to patch Debian package by this way. Nota: this patch sound like a big problem in low level KDE API which do not support multithreading (non-reentrance methods). We have already fight against this problem in the past (KDebug() for ex.) I recommend to _never_ use low levels KDE API in multithreaded implementation. QT support multithreading very well, but not KDE. Gilles Caulier David, You have done the original post of this problem in this room. I would to have your feedback before to close this file. Please, try current svn implementation of digiKam dedicaced to KDE3, or try to apply my patch against 0.9.2 source code on your computer. Thanks in advance Gilles Caulier Benjamin have tested current fix on svn. I close this file now. Gilles Caulier |