Bug 502487

Summary: Auto-Rotate does not work correct when more than one image is selected in thumbnail view
Product: [Applications] digikam Reporter: Braun.Lot
Component: Thumbs-IconViewAssignee: Digikam Developers <digikam-bugs-null>
Status: REPORTED ---    
Severity: normal CC: caulier.gilles, metzpinguin, michael_miller
Priority: NOR    
Version First Reported In: 8.7.0   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Braun.Lot 2025-04-06 15:20:34 UTC
related to 502200
If more than one image is selected in thumbnail view and auto-rotated (Ctrl/Shift up), the result is often wrong. (Tested with 5 and 100 images)
If only one image is selected, auto-rotate works fine.
This was tested with nightly build from Saturday 2025-04-05 with both tiff and jpg files.
Comment 1 Michael Miller 2025-04-06 15:27:20 UTC
(In reply to Braun.Lot from comment #0)
> related to 502200
> If more than one image is selected in thumbnail view and auto-rotated
> (Ctrl/Shift up), the result is often wrong. (Tested with 5 and 100 images)
> If only one image is selected, auto-rotate works fine.
> This was tested with nightly build from Saturday 2025-04-05 with both tiff
> and jpg files.

Thank you, Lothar.  I think this might be related to #502455.  I'll need Gilles or Maik's help to figure it out.

Cheers,
Mike
Comment 2 caulier.gilles 2025-04-11 18:13:42 UTC
Hi,

The 8.7.0 pre-release Windows installer from today have been rebuilt from
scratch with Qt 6.8.3, KDE 6.12, OpenCV 4.11 + CUDA support, Exiv2 0.28.5, ExifTool 13.27, ffmpeg 7, all image codecs updated to last version (jxl, avif, heif, aom, etc.).

Please try with this version to see if your problem still reproducible...

https://files.kde.org/digikam/

Thanks in advance
Best regards

Gilles Caulier
Comment 3 Braun.Lot 2025-04-13 14:06:56 UTC
Hi,
it seems somewhat improved, but not fixed.
I do start with an empty database and point digikam to an album with 100 tiff Files, all scans from color slides. All with the same orientation (landscape or perhaps none)
I select all with CTRL/A and run auto-rotate with Ctrl/Shift up. Some will be rotated but it seems quite random which one is and which not.
Pressing CTRL/Shift up again leads to other still random but somewhat better results.
Marking only 6 in a row gives good results, no matter if I start with a fresh database or after trying with CTRL/A.
Looks a bit like an optimisation for a specific number gone wrong (just guessing)

Also sometimes just one of any selected thumbnails changes orientation with every press of Ctl/Shift up, but not if it is the only selected thumbnail.

testet with digiKam-8.7.0-20250413T130156-Qt6-Win64.tar.xz
Comment 4 Michael Miller 2025-05-05 10:18:49 UTC
Hello,
A change was made to digiKam yesterday that should fix this issue.  It should be in the build with a date after20250505.  Sorry it took so long to fix this.  It was a tricky one to figure out.

Cheers,
Mike
Comment 5 Braun.Lot 2025-05-06 12:47:29 UTC
Hi Mike,
the tar file is still "digiKam-8.7.0-20250504T170139-Qt6-Win64.tar.xz" from the fourth.
Is this a star wars thing or perhaps a problem with the pipeline?
cheers
Lothar
Comment 6 Michael Miller 2025-05-06 14:47:48 UTC
(In reply to Braun.Lot from comment #5)
> Hi Mike,
> the tar file is still "digiKam-8.7.0-20250504T170139-Qt6-Win64.tar.xz" from
> the fourth.
> Is this a star wars thing or perhaps a problem with the pipeline?
> cheers
> Lothar

Hi Lothar,
I probably did something to break the pipeline.  I'll need Gilles to take a look and fix whatever I did to break the Windows build.

Cheers,
Mike
Comment 7 caulier.gilles 2025-05-07 14:01:18 UTC
Hi Michael,

The Windows build is broken here under Windows :

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(64,18): warning C4273: 'Digikam::AIToolsPipeline::AIToolsPipeline': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(201,5):
      see previous definition of 'Digikam::AIToolsPipeline::AIToolsPipeline'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(72,19): warning C4273: 'Digikam::AIToolsPipeline::~AIToolsPipeline': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(45,6):
      see previous definition of 'Digikam::AIToolsPipeline::~AIToolsPipeline'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(77,35): warning C4273: 'Digikam::AIToolsPipeline::instance': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(51,29):
      see previous definition of 'Digikam::AIToolsPipeline::instance'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(82,23): warning C4273: 'Digikam::AIToolsPipeline::start': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(57,10):
      see previous definition of 'Digikam::AIToolsPipeline::start'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(149,23): warning C4273: 'Digikam::AIToolsPipeline::autoRotate': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(65,10):
      see previous definition of 'Digikam::AIToolsPipeline::autoRotate'

  core_imageeditor_obj.vcxproj -> E:\b\dktemp\digikam-master\build\core\utilities\imageeditor\core_imageeditor_obj.dir\RelWithDebInfo\core_imageeditor_obj.lib
E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(154,23): warning C4273: 'Digikam::AIToolsPipeline::process': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(76,10):
      see previous definition of 'Digikam::AIToolsPipeline::process'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(184,23): warning C4273: 'Digikam::AIToolsPipeline::process': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(87,10):
      see previous definition of 'Digikam::AIToolsPipeline::process'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(229,23): warning C4273: 'Digikam::AIToolsPipeline::loader': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(101,10):
      see previous definition of 'Digikam::AIToolsPipeline::loader'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(292,23): warning C4273: 'Digikam::AIToolsPipeline::classifier': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(113,10):
      see previous definition of 'Digikam::AIToolsPipeline::classifier'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(360,23): warning C4273: 'Digikam::AIToolsPipeline::writer': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  geolocationsettingscontainer.cpp
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(125,10):
      see previous definition of 'Digikam::AIToolsPipeline::writer'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(440,23): warning C4273: 'Digikam::AIToolsPipeline::addMoreWorkers': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(130,10):
      see previous definition of 'Digikam::AIToolsPipeline::addMoreWorkers'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(450,32): warning C4273: 'Digikam::AIToolsPipeline::getProgressItem': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(136,19):
      see previous definition of 'Digikam::AIToolsPipeline::getProgressItem'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(473,23): warning C4273: 'Digikam::AIToolsPipeline::slotScheduled': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(143,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotScheduled'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(482,23): warning C4273: 'Digikam::AIToolsPipeline::slotStarted': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  dbheaderlistitem.cpp
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(149,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotStarted'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(493,23): warning C4273: 'Digikam::AIToolsPipeline::slotProcessed': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(155,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotProcessed'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(517,23): warning C4273: 'Digikam::AIToolsPipeline::slotSkipped': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(161,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotSkipped'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(533,23): warning C4273: 'Digikam::AIToolsPipeline::slotFinished': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(166,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotFinished'

E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.cpp(545,23): warning C4273: 'Digikam::AIToolsPipeline::slotBatchCancel': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  timelinewidget.cpp
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(171,10):
      see previous definition of 'Digikam::AIToolsPipeline::slotBatchCancel'

  dcategorizedview_p.cpp
E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(112,32): warning C4273: 'Digikam::AIToolsPipeline::qt_static_metacall': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(38,5):
      see previous definition of 'Digikam::AIToolsPipeline::qt_static_metacall'

  Generating Code...
E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(155,64): warning C4273: 'staticMetaObject': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(38,5):
      see previous definition of 'staticMetaObject'

E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(155,64): error C2491: 'Digikam::AIToolsPipeline::staticMetaObject': definition of dllimport static data member not allowed [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')

E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(165,46): warning C4273: 'Digikam::AIToolsPipeline::metaObject': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(38,5):
      see previous definition of 'Digikam::AIToolsPipeline::metaObject'

  mysqlinitbinary.cpp
E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(170,33): warning C4273: 'Digikam::AIToolsPipeline::qt_metacast': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(38,5):
      see previous definition of 'Digikam::AIToolsPipeline::qt_metacast'

E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(178,31): warning C4273: 'Digikam::AIToolsPipeline::qt_metacall': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  mocs_compilation_RelWithDebInfo.cpp
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(38,5):
      see previous definition of 'Digikam::AIToolsPipeline::qt_metacall'

E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(196,32): warning C4273: 'Digikam::AIToolsPipeline::signalProcessingStarted': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  embossfilter.cpp
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(179,10):
      see previous definition of 'Digikam::AIToolsPipeline::signalProcessingStarted'

  Generating Code...
E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(203,32): warning C4273: 'Digikam::AIToolsPipeline::signalProcessingFinished': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(186,10):
      see previous definition of 'Digikam::AIToolsPipeline::signalProcessingFinished'

E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj_autogen\include_RelWithDebInfo\moc_aitoolspipeline.cpp(210,32): warning C4273: 'Digikam::AIToolsPipeline::signalTransform': inconsistent dll linkage [E:\b\dktemp\digikam-master\build\core\libs\aitoolspipeline\gui_aitoolspipeline_obj.vcxproj]
  (compiling source file '../../../../core/libs/aitoolspipeline/aitoolspipeline.cpp')
      E:\b\dktemp\digikam-master\core\libs\aitoolspipeline\aitoolspipeline.h(193,10):
      see previous definition of 'Digikam::AIToolsPipeline::signalTransform'

You can see the log updated here at each build :

https://files.kde.org/digikam/build.logs/win64-Qt6/

I will fix it...

Gilles
Comment 8 caulier.gilles 2025-05-07 15:37:30 UTC
Git commit 510bc94794620524bbee936559abe4e2f03cbc7a by Gilles Caulier.
Committed on 07/05/2025 at 15:36.
Pushed by cgilles into branch 'master'.

fix export object rules under windows

M  +1    -1    core/libs/aitoolspipeline/aitoolspipeline.h
M  +1    -1    core/libs/aitoolspipeline/aitoolspipelinepackage.h

https://invent.kde.org/graphics/digikam/-/commit/510bc94794620524bbee936559abe4e2f03cbc7a
Comment 9 Braun.Lot 2025-05-08 15:00:14 UTC
Hi Mike,
Very good job; it does now work as advertised and with 4 wrong out of 100, I think it is quiet good.

But there is still something that I do not understand:
After running auto-rotate with 100 pics selected, when I check the wrong ones and apply auto-rotate just for one (wrong) pic, it is again rotated. Sometimes back to normal, sometimes another turn to up-side-down. A second try with this pic may rotate it again (not always) and then it stays this way when applying auto-rotate.
This is with my TIFF Files and I per configuration their is no write back to the pictures, but the information is kept only in the database.
First, my guess was, that if the engine gives a 50:50 probability, the orientation is always flipped.
But perhaps, the existence or absence of an orientation flag is to blame.
If you do want to examinate this behaviour, I could provide examples and could do some cross-checks with the tiffs converted to jpgs.

Cheers,
Lothar
Comment 10 Michael Miller 2025-05-16 16:20:51 UTC
(In reply to Braun.Lot from comment #9)
> Hi Mike,
> Very good job; it does now work as advertised and with 4 wrong out of 100, I
> think it is quiet good.
> 
> But there is still something that I do not understand:
> After running auto-rotate with 100 pics selected, when I check the wrong
> ones and apply auto-rotate just for one (wrong) pic, it is again rotated.
> Sometimes back to normal, sometimes another turn to up-side-down. A second
> try with this pic may rotate it again (not always) and then it stays this
> way when applying auto-rotate.
> This is with my TIFF Files and I per configuration their is no write back to
> the pictures, but the information is kept only in the database.
> First, my guess was, that if the engine gives a 50:50 probability, the
> orientation is always flipped.
> But perhaps, the existence or absence of an orientation flag is to blame.
> If you do want to examinate this behaviour, I could provide examples and
> could do some cross-checks with the tiffs converted to jpgs.
> 
> Cheers,
> Lothar

Hi Lothar,
Yes, if can attach a sample image I will take a look.

Cheers,
Mike
Comment 11 Braun.Lot 2025-05-30 18:56:17 UTC
Hi Mike,
as the files exceed the attachment limit, here is again a link:
https://magentacloud.de/s/KyPm6qDSWDbQL8M
The Test Exe is from 2025-05-28.
I used an empty database and my configuration is to only change the orientation flag in the database and not write anything back to the image.
I pointed the album to a directory with just those two images, the jpg being a converted version of the tif file.
Selecting both and pressing Ctrl/shift up repeatedly rotates both images with each key press.
Obviously I would prefer that this image would never be changed from landscape to portrait, but flipping it always is a bit worse.
Thanks a lot and once again - very impressive work!
Lothar
Comment 12 caulier.gilles 2025-06-25 06:05:47 UTC
Hi Michael,

Did you seen the link to the test image from the comment 11?

Best regards

Gilles
Comment 13 caulier.gilles 2025-06-29 02:57:39 UTC
Git commit 57ab89035a09711b2325fcbf6f80bbf69cbf53a0 by Gilles Caulier.
Committed on 29/06/2025 at 02:51.
Pushed by cgilles into branch 'master'.

MetaEngine::TransformationAction enum is used in signals and slots from the AI rotation tool.
Declare MetaEngineRotation as Q_GADGET and TansformationAction enum as Q_ENUM.
See specificties of signals and slots usages to follow with custom types, else signals and slots connexions are broken at run-time:

https://doc.qt.io/qt-6/qmetatype.html#Q_DECLARE_METATYPE

M  +3    -0    core/libs/metadataengine/engine/metaengine_rotation.h
M  +0    -11   core/libs/mlfoundation/mlpipelinepackagenotify.cpp
M  +0    -1    core/libs/mlfoundation/mlpipelinepackagenotify.h

https://invent.kde.org/graphics/digikam/-/commit/57ab89035a09711b2325fcbf6f80bbf69cbf53a0
Comment 14 caulier.gilles 2025-07-11 14:52:44 UTC
Hi Braun,

I suspect that your problem was relevant of code that i fix in my last commit. Can you test if the problem is reproducible with the current Windows 8.8.0 installer available here :

https://files.kde.org/digikam/

Thanks in advance

Gilles Caulier
Comment 15 Braun.Lot 2025-07-22 13:52:04 UTC
Hi Gilles,
sorry it took so long, but now I am sorry to report, that the behaviour does not have changed.
I have added a third picture "vlcsnap-00061.jpg" to the online storage https://magentacloud.de/s/KyPm6qDSWDbQL8M which has also a strange behaviour:
1. orientation is correct
2. change orientation with Ctrl/Shift Left or Ctrl/Shift Right 
3. auto rotate with Ctrl/Shift UP ==> orientation is correct again
But
- change orientation with pressing Ctrl/Shift Left or Ctrl/Shift Right  twice ==> upside down
- auto rotate with Ctrl/Shift UP ==> orientation is only changed once from landscape to portrait 
- auto rotate with Ctrl/Shift UP ==> orientation is correct again

Could it be that my settings are relevant?
- Rotate by only setting a flag
- Show images/thumbnails rotated according to orientation flag
- not checked: Set orientation tag to normal
I do NOT write back metadata to the image

By the way - this is the reason, why I proposed to add auto-rotate to the maintenance tool. The batch queue manager writes its changes always back to the image. But I would like to leave those unchanged. Perhaps this could be added to the auto-tag feature?

Thanks a lot
Lothar
Comment 16 Maik Qualmann 2025-07-22 18:56:44 UTC
Auto-rotate is probably fixed now with my last commit.

https://invent.kde.org/graphics/digikam/-/commit/4bd723ba1698338744b870e1df6846b35ce6c940

Maik
Comment 17 Braun.Lot 2025-07-23 13:54:57 UTC
Hi,
I did some tests with digiKam-8.8.0-20250723T090151-Qt6-Win64.tar.
I hope this includes the latest fixes.

First of all - the original bug is fixed for me, auto-rotate works with more than one image selected. I got no hangers or such things.

But I there are still some things bothering me:

1. auto-rotate for 100 tiff images seems now a lot slower than in the beginning. My feeling (no measurements done) is, that it is now nearer to the time it takes in the batch queue. I thought batch was much slower, because it would ride changes back to the image file. (I am happy with just a database flag!) I will compare it to the stable version.

2. The visual feedback is a bit weird (at least for me)
Working in thumbnail view, all images are selected and highlighted with blue background.
After the start, all images vanish and a progress bar appears.
Then the images reappear one by one, in no specific order, most with the original landscape format.
Then some images change to portrait format.

3. There is still the point, that auto-rotate is sometimes non consistent please see Comments 11 and 15
Should I move those to a new bug?

4. I do not know if this is possible, but I would like some flag to tell digikam that a specific image has the correct orientation. I would like a workflow that processes all images with auto-rotation, face tagging and auto-tagging (preferable as part of the maintenance tool), and then checking that automatic work.
Should this be a new request?

But last not least - praise for all the people who do such a magnificent job!
Thanks a lot
Lothar
Comment 18 caulier.gilles 2025-07-23 14:09:57 UTC
Note 1 : don't forget that the auto-rotation job is process by a deep learning model analyzing the image contents and process rotations accordingly with the orientation recognized by the AI.

So the model can take a while to analyze the images.

Note 2 : The list of images to process are passed to a pool of thread to be process in a separated core one by one, but in parallel. Typically, the images are parsed separately and without synchronism. The processing time is different for each item, and the image list is dequeued following the cores available on your computer.

So the rotated target images arrive in th thumbnails view in a non determinism order.

Best

Gilles Caulier
Comment 19 caulier.gilles 2025-08-17 14:19:23 UTC
@Braun,

The digiKam 8.8.0 pre-release Windows installer will be updated from Qt framework 6.8.3 to 6.9.0 in one hour. The file will be available soon at this place:

https://files.kde.org/digikam/

Please test give us a feedback to see if the dysfunction still reproducible.
Thanks in advance

Gilles Caulier