Launchpad has imported 11 comments from the remote bug at https://bugs.kde.org/show_bug.cgi?id=126326.
If you reply to an imported comment from within Launchpad, your comment will be sent to the remote bug automatically. Read more about Launchpad's inter-bugtracker facilities at https://help.launchpad.net/InterBugTracking. ------------------------------------------------------------------------ On 2006-04-27T01:38:15+00:00 Achim Bohnet wrote: Version: 0.8.2-beta1 (using KDE 3.5.2, Kubuntu Package 4:3.5.2-0ubuntu10 dapper) Compiler: Target: i486-linux-gnu OS: Linux (i686) release 2.6.15-21-686 This is not a duplicate of "Bug 118501: exifs lost when modifying the images" ('cause my debug output did not show up;) This report is triggered by a Kubuntu/Dapper bug report: https://launchpad.net/distros/ubuntu/+source/digikam/+bug/34462 To reproduce: o copy images from http://digikam3rdparty.free.fr/TEST_IMAGES/JPEG/Vertical/ into an empty folder o Goto 'Add camera' and add a 'Mounted camera' with mountpoint as the download dir as above. Name it, e.g. 'Vertial' o download from camera 'Vertical' all pics with 'automaticly rotate/flip using camera ... (EXIF)' selected. ==> 7 x 'no EXIF information' and 7 pictures lost their exif info Adding some debug statements I found that everytime exifDate.getImageOrientation return > 1 (or !=) there's a problem: exif data lost. Achim Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/4 ------------------------------------------------------------------------ On 2006-04-27T02:02:45+00:00 Achim Bohnet wrote: Debug output (I'll commit and CCBUGS the correponding code soon) [.. snip with orient=1 ..] digikam: Autorotate : Coolpix4500_2.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 1137188 bytes, orient =1 digikam: Autorotate : DSCN9703.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 821436 bytes, orient =1 digikam: Autorotate : DSCN9704.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 833656 bytes, orient =1 digikam: Autorotate : IMG_0001.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 3815715 bytes, orient =1 digikam: Autorotate : IMG_0002.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 3376701 bytes, orient =1 digikam: Dirty: /00-New/test digikam: Autorotate : IMG_0003.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 3289163 bytes, orient =1 digikam: Autorotate : IMG_0004.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 3468711 bytes, orient =1 digikam: Autorotate : IMG_1515.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 1037958 bytes, orient =8 digikam: No EXIF information found. digikam: Autorotate : IMG_1517.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: Dirty: / digikam: Dirty: /00-New/test digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 1640353 bytes, orient =6 digikam: No EXIF information found. digikam: Autorotate : IMG_2261.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 520608 bytes, orient =6 digikam: No EXIF information found. digikam: Autorotate : IMG_2265.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 1186947 bytes, orient =6 digikam: No EXIF information found. digikam: Autorotate : IMG_2266.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 1161070 bytes, orient =8 digikam: No EXIF information found. digikam: Autorotate : IMG_3809.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 3720604 bytes, orient =8 digikam: No EXIF information found. digikam: Autorotate : IMG_3810.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 4132549 bytes, orient =6 digikam: No EXIF information found. digikam: Autorotate : MINOLTA-DYNAX5D.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 4144978 bytes, orient =1 digikam: Autorotate : NIKON-D200-01.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 2292238 bytes, orient =1 digikam: Autorotate : PICT0001.JPG using /home/ach/Pictures/00-New/test/.digikam-camera-25106 digikam: /home/ach/Pictures/00-New/test/.digikam-camera-25106 = 2238757 bytes, orient =1 [.. snap with orient=1] Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/5 ------------------------------------------------------------------------ On 2006-04-27T02:05:56+00:00 Achim Bohnet wrote: SVN commit 534392 by ach: digikam stable: more debug output CCBUGS: 126326 M +5 -1 libs/jpegutils/exifrotate.cpp M +4 -1 utilities/cameragui/cameracontroller.cpp --- branches/stable/extragear/graphics/digikam/libs/jpegutils/exifrotate.cpp #534391:534392 @@ -61,9 +61,13 @@ KExifData exifData; if (!exifData.readFromFile(file)) { - kdDebug() << "No exif data found into " << file << endl; + kdDebug() << "No exif data found into " << file << endl; return true; } + // start debug: + QFile foo(file); + kdDebug() << file << " = " << foo.size() << " bytes, orient =" << exifData.getImageOrientation() << endl; + JCOPY_OPTION copyoption = JCOPYOPT_ALL; jpeg_transform_info transformoption; --- branches/stable/extragear/graphics/digikam/utilities/cameragui/cameracontroller.cpp #534391:534392 @@ -324,10 +324,13 @@ { if (autoRotate) { + kdDebug() << "Autorotate : " << file << " \tusing " << tempURL.path() << endl; sendInfo(i18n("EXIF rotating file %1...") .arg(file)); Digikam::exifRotate(tempURL.path()); - } + } else { + kdDebug() << "No Autorotate: " << file << endl; + } // move the file to the destination file if (rename(QFile::encodeName(tempURL.path()), Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/6 ------------------------------------------------------------------------ On 2006-04-27T09:48:21+00:00 Caulier-gilles-9 wrote: nota : I have tested indeep using 0.9.0-svn : I cannot reproduce this problem. Important : ExifRotate in 0.8.x use libexif/libkexif and in 0.9.0-svn it use Exiv2. It's different... Gilles Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/7 ------------------------------------------------------------------------ On 2006-04-27T10:39:34+00:00 Caulier-gilles-9 wrote: SVN commit 534496 by cgilles: digikam from stable : ExifRotate : - Cleanup source code like in trunk branch. There are no fondamental change about exif orientation rules use to perform JPEG transformation. - Add a test to check we have a real JPEG image like in trunk. - Add indeep debug messages Tested indeep : i cannot reproduce the problem here. No Exif informations are lost after rotation CCBUGS: 126326 CCMAIL: [email protected] M +215 -180 exifrotate.cpp M +7 -5 exifrotate.h Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/8 ------------------------------------------------------------------------ On 2006-04-27T10:43:38+00:00 Caulier-gilles-9 wrote: Achim, Very important : after to have performed Exif rotation on image collection, are you used : 1- Image/Properties/exif dialog tab (always work here) 2- album file tip : here this way don't show Exif info because jpeg image are detected like RAW files by KDE. In trunk, this problem have been fixed. Gilles Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/9 ------------------------------------------------------------------------ On 2006-04-27T13:31:23+00:00 Achim Bohnet wrote: Hi Gilles, in both, Tooltip and RMB menu over thumbnail -> Properties, EXIF tab The EXIF tab is completely empty. Achim Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/10 ------------------------------------------------------------------------ On 2006-04-27T13:34:40+00:00 Caulier-gilles-9 wrote: It's not the case here. All work fine. I have reproduce the download many time on 3 computers without problem. Please checkout the code and try again. You can look in the console : there are a lot of debug infos now. Gilles Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/11 ------------------------------------------------------------------------ On 2006-04-27T13:46:04+00:00 Achim Bohnet wrote: about the Tooltip. Hmm, when I look at those images as downloaded from free.fr the tooltip shows e.g. creation time and exposure time. So tooltip display some exif info. After I download with auto-rotate this is no longer displayed. e.g. this happens with IMG_2266.JPG and IMG_2265.JPG. Achim P.S. I will not find time to test the new code before friday night. Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/12 ------------------------------------------------------------------------ On 2006-05-10T17:03:54+00:00 Achim Bohnet wrote: SVN commit 539367 by ach: digikam trunk: forward port of r539364: o disable enable final for jpegutils/. Fixes bug 126326 when --enable-final is used. Thx to Gilles for the hint. M +5 -0 Makefile.am --- trunk/extragear/graphics/digikam/libs/jpegutils/Makefile.am #539366:539367 @@ -1,5 +1,10 @@ METASOURCES = AUTO +# --enable-final triggers: http://bugs.kde.org/show_bug.cgi?id=126326 +# digikam: camera download: auto-rotated images loose EXIF info ... +# So make sure nofinal is always used here! +KDE_OPTIONS = nofinal + INCLUDES = $(all_includes) \ -I$(top_srcdir)/digikam/libs/dmetadata \ Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/15 ------------------------------------------------------------------------ On 2006-05-10T21:23:18+00:00 Caulier-gilles-9 wrote: SVN commit 539482 by cgilles: JpegLossLess plugin : backport fix from digiKam (see file 126326 in B.K.O) about an incompatibility with JPEG implementation and "enable- final" option! CCMAIL: [email protected] CCBUGS: 126326 M +6 -2 Makefile.am M +4 -4 convert2grayscale.cpp M +4 -4 imageflip.cpp M +62 -44 imagerotate.cpp --- trunk/extragear/libs/kipi-plugins/jpeglossless/Makefile.am #539481:539482 @@ -1,7 +1,11 @@ METASOURCES = AUTO -KDE_CXXFLAGS = $(USE_EXCEPTIONS) INCLUDES = $(LIBKIPI_CFLAGS) $(LIBKEXIF_CFLAGS) $(all_includes) +# --enable-final triggers: http://bugs.kde.org/show_bug.cgi?id=126326 +# digikam: camera download: auto-rotated images loose EXIF info ... +# So make sure nofinal is always used here! +KDE_OPTIONS = nofinal + # Install this plugin in the KDE modules directory kde_module_LTLIBRARIES = kipiplugin_jpeglossless.la @@ -12,7 +16,7 @@ imagerotate.cpp convert2grayscale.cpp imageflip.cpp kipiplugin_jpeglossless_la_LIBADD = $(LIB_KPARTS) \ - -ljpeg -lMagick++ $(LIBKIPI_LIBS) $(LIBKEXIF_LIBS) + -ljpeg -lWand $(LIBKIPI_LIBS) $(LIBKEXIF_LIBS) kipiplugin_jpeglossless_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) --- trunk/extragear/libs/kipi-plugins/jpeglossless/convert2grayscale.cpp #539481:539482 @@ -41,9 +41,9 @@ #include <kdebug.h> #include <kurl.h> -// ImageMgick includes. +// ImageMagick includes. -#include <Magick++.h> +//#include <Magick++.h> // Local includes. @@ -192,7 +192,7 @@ bool image2GrayScaleImageMagick(const QString& src, const QString& dest, QString& err) { - try +/* try { Magick::Image image; std::string srcFileName(QFile::encodeName(src)); @@ -209,7 +209,7 @@ err = i18n("Cannot convert to gray scale: %1").arg(error_.what()); kdError() << "Convert2GrayScale: ImageMagick exception: " << error_.what() << endl; return false; - } + }*/ } } // NameSpace KIPIJPEGLossLessPlugin --- trunk/extragear/libs/kipi-plugins/jpeglossless/imageflip.cpp #539481:539482 @@ -44,9 +44,9 @@ #include <libkexif/kexifdata.h> -// ImageMgick includes. +// ImageMagick includes. -#include <Magick++.h> +//#include <Magick++.h> // Local includes @@ -131,7 +131,7 @@ bool flipImageMagick(const QString& src, const QString& dest, FlipAction action, QString& err) { - try +/* try { Magick::Image image; std::string srcFileName(QFile::encodeName(src)); @@ -166,7 +166,7 @@ err = i18n("Cannot flip: %1").arg(error_.what()); kdError() << "ImageFlip: ImageMagick exception: " << error_.what() << endl; return false; - } + }*/ } } // NameSpace KIPIJPEGLossLessPlugin --- trunk/extragear/libs/kipi-plugins/jpeglossless/imagerotate.cpp #539481:539482 @@ -26,8 +26,6 @@ #include <cstdio> #include <cstdlib> -#include <cassert> -#include <string> // Qt includes. @@ -47,10 +45,6 @@ #include <libkexif/kexifdata.h> -// ImageMgick includes. - -#include <Magick++.h> - // Local includes. #include "imagerotate.h" @@ -63,6 +57,7 @@ #include <sys/types.h> #include <unistd.h> #include <jpeglib.h> +#include <wand/magick-wand.h> #include "transupp.h" #include "jpegtransform.h" } @@ -145,51 +140,74 @@ bool rotateImageMagick(const QString& src, const QString& dest, RotateAction angle, QString& err) { - try + bool valRet = true; + MagickWandGenesis(); + PixelWand *background = NewPixelWand(); + MagickWand *magickWand = NewMagickWand(); + MagickBooleanType status = MagickReadImage(magickWand, QFile::encodeName(src)); + + if (status == MagickFalse) { - Magick::Image image; - std::string srcFileName(QFile::encodeName(src)); - image.read(srcFileName); + err = i18n("Failed to load original image"); + valRet = false; + goto Exit_Method; + } - switch(angle) + PixelSetColor(background, "#000000"); + + switch(angle) + { + case (Rot90): + { + status = MagickRotateImage(magickWand, background, 90.0); + break; + } + case (Rot180): { - case (Rot90): - { - image.rotate(90.0); - break; - } - case (Rot180): - { - image.rotate(180.0); - break; - } - case (Rot270): - { - image.rotate(270.0); - break; - } - case (Rot0): - { - break; - } - default: - { - kdError() << "ImageRotate: Nonstandard rotation angle" << endl; - err = i18n("Nonstandard rotation angle"); - return false; - } + status = MagickRotateImage(magickWand, background, 180.0); + break; } - - std::string destFileName(QFile::encodeName(dest)); - image.write(destFileName); - return true; + case (Rot270): + { + status = MagickRotateImage(magickWand, background, 270.0); + break; + } + case (Rot0): + { + break; + } + default: + { + kdError() << "ImageRotate: Nonstandard rotation angle" << endl; + err = i18n("Nonstandard rotation angle"); + valRet = false; + goto Exit_Method; + } } - catch( std::exception &error_ ) + + if (status == MagickFalse) { - err = i18n("Cannot rotating: %1").arg(error_.what()); - kdError() << "ImageRotate: ImageMagick exception: " << error_.what() << endl; - return false; + err = i18n("Failed to process image rotation image"); + valRet = false; + goto Exit_Method; } + + status = MagickWriteImages(magickWand, QFile::encodeName(dest), MagickTrue); + + if (status == MagickFalse) + { + err = i18n("Failed to save target image"); + valRet = false; + goto Exit_Method; + } + +Exit_Method: + + if (background) DestroyPixelWand(background); + MagickClearException(magickWand); + if (magickWand) DestroyMagickWand(magickWand); + MagickWandTerminus(); + return valRet; } } // NameSpace KIPIJPEGLossLessPlugin Reply at: https://bugs.launchpad.net/digikam/+bug/34462/comments/16 -- You received this bug notification because you are a member of Kubuntu Bugs, which is subscribed to digikam in Ubuntu. https://bugs.launchpad.net/bugs/34462 Title: Digikam deletes EXIFs when auto-rotating on import To manage notifications about this bug go to: https://bugs.launchpad.net/digikam/+bug/34462/+subscriptions -- kubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/kubuntu-bugs
