Bug 393408 - Support for extra image formats as HEIC, FITS, WEBP [patch]
Summary: Support for extra image formats as HEIC, FITS, WEBP [patch]
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Plugin-DImg-Magick (show other bugs)
Version: 5.6.0
Platform: Kubuntu Linux
: NOR wishlist
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-22 21:37 UTC by Philipp
Modified: 2021-09-12 01:32 UTC (History)
13 users (show)

See Also:
Latest Commit:
Version Fixed In: 7.3.0


Attachments
HEICQImageLoader.patch (2.76 KB, patch)
2018-04-23 20:52 UTC, Maik Qualmann
Details
HEICQImageLoader2.patch (3.29 KB, patch)
2018-11-24 15:51 UTC, Maik Qualmann
Details
Sample HEIC (1.60 MB, image/heic)
2018-11-24 18:45 UTC, Nick Triantos
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp 2018-04-22 21:37:03 UTC
support for viewing (and maybe even editing) HEIC/HEIF images in Digikam and Sowfoto would be cool.
Comment 1 Maik Qualmann 2018-04-23 06:15:09 UTC
There is already first support in FFMpeg. FFMpeg can create a thumbnail image here in digiKam-6.0.0 from a HEIC image. I think we will be able to write a decoder in the future.
Comment 2 caulier.gilles 2018-04-23 06:49:07 UTC
Note: writing a codec in digikam is not enough. We need also a support of metadata in exiv2. This must be reported as UPSTREAM in Exiv2 bugzilla

Gilles Caulier
Comment 3 Maik Qualmann 2018-04-23 20:52:32 UTC
Created attachment 112205 [details]
HEICQImageLoader.patch

Add VideoThumbnal loader to the QImage loader to read normal HEIC images.

Maik
Comment 4 caulier.gilles 2018-04-24 08:44:52 UTC
Maik,

Interesting solution, to use ffmpeg to wrap image data in QImage container...

Probably other new image container based on wavelets compression and video codec can be handle by this way, JPEG-XR and BPG.

The HEIC container is based on standard ISO : 

http://nokiatech.github.io/heif/technical.html

I'm in doubt if Exiv2 already support this format. At least, Exif and XMP are supported in HEIC. this must be reported to Exiv bugzilla.

Gilles
Comment 5 Maik Qualmann 2018-04-24 10:31:44 UTC
The solution with the QImage loader is just for fun at the moment. The metadata is read by the FFmpeg metadata reader. Exiftool does not show much more in the demo HEIC files. Exiv2 can not open the file. Hard to find more test samples on the web.

Maik
Comment 6 caulier.gilles 2018-04-24 10:34:51 UTC
I set this file more explicit about new format to support through FFMPEG.

Look this page :

https://www.ffmpeg.org/general.html#Image-Formats

FITS is supported : NASA and astronomy images.
JPEG-LS : medical scan image in 12 bits color depth and with lossless compression.

Gilles Caulier
Comment 7 caulier.gilles 2018-04-24 11:45:12 UTC
Maik,

https://bugs.kde.org/show_bug.cgi?id=385726

Apple format must be based on HEIF, but i'm not sure to 100%

Also Apple format is multiple image embedded, as a short video.

Gilles
Comment 8 Nick Triantos 2018-11-24 07:04:45 UTC
Has there been any progress on this issue? This does not appear to be an Apple-proprietary format.. it's based on HEVC / H.265, according to https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format. I am unsure whether Exiv2 has been updated yet, though it does appear that Exiv2 supports HEVC video files, so perhaps this would just work?
Comment 9 caulier.gilles 2018-11-24 09:39:10 UTC
digiKam  6.0.0 do not use Exiv2 video support has this code is completely unstable. We use ffmpeg instead for all video format.

Don't forget that Exiv2 is to handle image metadata, not to read image data. 

This entry is to delegate the image data loading, using ffmpeg codecs.

Gilles Caulier
Comment 10 Maik Qualmann 2018-11-24 15:51:18 UTC
Created attachment 116489 [details]
HEICQImageLoader2.patch

Updated patch to compile with git/master. He works fine with the 2 images I found on the web. What we need is HEIC/HEIF test samples.

Maik
Comment 11 Nick Triantos 2018-11-24 18:45:56 UTC
Created attachment 116490 [details]
Sample HEIC

I've posted one sample pic that I took, and there are also a bunch of samples here: http://nokiatech.github.io/heif/examples.html. thanks!
Comment 12 Nick Triantos 2018-11-24 18:46:24 UTC
Thanks. Just realized my comment is only on the attachment. I found a bunch of example HEIF images here: http://nokiatech.github.io/heif/examples.html
Comment 13 Maik Qualmann 2018-11-24 19:07:40 UTC
Ok, I know the page. But when I click on an image, a preview is displayed and that is a PNG image. How do I download a HEIC image there? Browser is here Chromium.

Maik
Comment 14 Maik Qualmann 2018-11-24 19:57:34 UTC
The test image of Comment 11 can not be opened / processed by FFmpeg.

Maik
Comment 16 Nick Triantos 2018-11-24 20:15:01 UTC
One more, from a different source:
https://cdn2.online-convert.com/example-file/raster%20image/heic/example.heic
Comment 17 Nick Triantos 2018-11-24 20:22:30 UTC
(In reply to Maik Qualmann from comment #14)
> The test image of Comment 11 can not be opened / processed by FFmpeg.
> 
> Maik

And just to re-confirm, I re-downloaded the image from my comment and it does open with Apple tools (such as Preview) on my Mac.
Comment 18 caulier.gilles 2019-04-08 15:23:04 UTC
Git commit 86a40546894c7b053ab3aad85a11a0c709e60220 by Gilles Caulier.
Committed on 08/04/2019 at 15:18.
Pushed by cgilles into branch 'master'.

Add ImageMagick codecs support as QImage fail-back image loader to be able
to render thumbnails and load image in editor with extra image format as HEIC, FITS, JPEG-XR, XCF.
For the moment, this will support image loading in this formats. Later we can plan to add writting
support if ImageMagick codecs can do it.
Related: bug 385726, bug 360806
FIXED-IN: 6.1.0

M  +1    -0    Mainpage.dox
M  +1    -0    NEWS
M  +8    -1    core/CMakeLists.txt
M  +4    -0    core/app/DigikamCoreTarget.cmake
M  +3    -0    core/app/utils/digikam_config.h.cmake.in
M  +10   -0    core/libs/dialogs/libsinfodlg.cpp
M  +2    -1    core/libs/dimg/loaders/README
M  +58   -2    core/libs/dimg/loaders/qimageloader.cpp
M  +5    -0    core/libs/dimg/loaders/qimageloader.h

https://commits.kde.org/digikam/86a40546894c7b053ab3aad85a11a0c709e60220
Comment 19 Yarick Yermak 2019-05-05 06:20:56 UTC
Hi all,

I tried version 6.1.0 on Windows.
Heic support does not work:
firstly, heic files were not displayed, until explicitely listed in Settings mime-types, regardless heic is claimed to be supported mime-type.
secondly heic files just displayed as unknown files (no thumbs) - and there is nothing could be done with them including viewing.

Is it possible to include heic support following the same way as nomacs did, by using qt-heif-image-plugin. See following link for details https://github.com/nomacs/nomacs/issues/257
Comment 20 caulier.gilles 2019-05-05 08:12:06 UTC
HEIF support is now managed by the new digiKam ImageMagick loader. By this way, we will support plenty new image formats.

The advantage to use Image Magick instead the QImageLoader is the 16 bits color depth support that digiKam can handle natively since more than 12 years now.

Other point is the advanced multipage support with Heif. ImageMagick support this container, even if digiKam is not yet able to choose the image in set.

ImageMagick HEIF writing is fully supported, in opposite than QImageLoader which is basic. There is also a identify mode avaialble in ImageMagick to preload image properties without to decode whole image. This is used while image scanning with database.

HEIF integration is done in Linux AppImage bundle for the moment, not yet in Windows and MacOS. Under these OS, MXE and MAcports do not inclide HEIF codec due to patents problem. We need to install HEIF codecs before to compile ImageMagick.

Gilles Caulier
Comment 21 caulier.gilles 2019-05-05 09:08:28 UTC
Git commit ab3a827d2daa0a98249173378b68f25c2b1ce7c9 by Gilles Caulier.
Committed on 05/05/2019 at 09:05.
Pushed by cgilles into branch 'master'.

compile and install HEIF libraries before to compile and install ImageMagick with MXE.
Good news: MXE install IM v6 and this one must support HEIF codec.

M  +94   -37   project/bundles/3rdparty/ext_heif/CMakeLists.txt
M  +9    -1    project/bundles/mxe/01-build-mxe.sh

https://invent.kde.org/kde/digikam/commit/ab3a827d2daa0a98249173378b68f25c2b1ce7c9
Comment 22 Yarick Yermak 2019-05-05 18:50:40 UTC
Gilles Caulier,

Thank you very much for explanation.
However, I tried both Linux AppImages 6.1-stable and digikam-6.2.0-git-20190505T184619-qtwebkit-x86-64.appimage (which seems to be very fresh build) under kubuntu-19.04 - heic files are NOT displayed properly. Thumbs have some "shadow artifacts" of the image, but immage is not displayed neither in preview no in viewer.

I would suggest to change Fix Version to "Unknown" as it's defintely does not on work in 6.1 
and change status of this issue to "REOPENED" - as even on latest git build it does not work.

Please see logs below:
Digikam::MetaEngine::Private::printExiv2ExceptionError: Cannot load metadata from file /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic  (Error # 11 :  /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic: The file contains data of an unknown image type
Digikam::DImg::load: "/mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic"  : Try to load with ImageMagick
Digikam::MetaEngine::Private::printExiv2ExceptionError: Cannot load metadata from file /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic  (Error # 11 :  /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic: The file contains data of an unknown image type
Digikam::MagickLoader::load: Try to load image with ImageMagick codecs
Digikam::StackedView::setViewMode: Stacked View Mode :  1
Digikam::StackedView::setViewMode: Stacked View Mode :  0
Digikam::MagickLoader::load: IM to DImg      : 3024 4032
Digikam::MagickLoader::load: IM QuantumRange : 65535
Digikam::MagickLoader::load: IM Format       : High Efficiency Image Format
Digikam::StackedView::setViewMode: Stacked View Mode :  1
Digikam::MagickLoader::load: IM blob size    : 97542144

If I missed the point and I have to pre-install or pre-compile something under linux, please point me to relevant source or how-to...

P.S. Digikam Linux AppImage works quite well under Windows Subsystem for Linux (ubuntu) - had to install depoendencies: libsm6, libqt5opengl5, libasound2, manually create /var/lib/dbus/machine-id and redirect X to Windows X Server. Works same as KDE version - shows same artifacts on thumbs for heic instead of images.


(In reply to caulier.gilles from comment #20)
> HEIF support is now managed by the new digiKam ImageMagick loader. By this
> way, we will support plenty new image formats.
> 
> The advantage to use Image Magick instead the QImageLoader is the 16 bits
> color depth support that digiKam can handle natively since more than 12
> years now.
> 
> Other point is the advanced multipage support with Heif. ImageMagick support
> this container, even if digiKam is not yet able to choose the image in set.
> 
> ImageMagick HEIF writing is fully supported, in opposite than QImageLoader
> which is basic. There is also a identify mode avaialble in ImageMagick to
> preload image properties without to decode whole image. This is used while
> image scanning with database.
> 
> HEIF integration is done in Linux AppImage bundle for the moment, not yet in
> Windows and MacOS. Under these OS, MXE and MAcports do not inclide HEIF
> codec due to patents problem. We need to install HEIF codecs before to
> compile ImageMagick.
> 
> Gilles Caulier
Comment 23 Yarick Yermak 2019-05-05 18:52:08 UTC
Gilles Caulier,

Thank you very much for explanation.
However, I tried both Linux AppImages 6.1-stable and digikam-6.2.0-git-20190505T184619-qtwebkit-x86-64.appimage (which seems to be very fresh build) under kubuntu-19.04 - heic files are NOT displayed properly. Thumbs have some "shadow artifacts" of the image, but immage is not displayed neither in preview no in viewer.

I would suggest to change Fix Version to "Unknown" as it's defintely does not on work in 6.1 
and change status of this issue to "REOPENED" - as even on latest git build it does not work.

Please see logs below:
Digikam::MetaEngine::Private::printExiv2ExceptionError: Cannot load metadata from file /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic  (Error # 11 :  /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic: The file contains data of an unknown image type
Digikam::DImg::load: "/mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic"  : Try to load with ImageMagick
Digikam::MetaEngine::Private::printExiv2ExceptionError: Cannot load metadata from file /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic  (Error # 11 :  /mnt/Cloud/Camera Roll/2019/05/20190503_111755557_iOS.heic: The file contains data of an unknown image type
Digikam::MagickLoader::load: Try to load image with ImageMagick codecs
Digikam::StackedView::setViewMode: Stacked View Mode :  1
Digikam::StackedView::setViewMode: Stacked View Mode :  0
Digikam::MagickLoader::load: IM to DImg      : 3024 4032
Digikam::MagickLoader::load: IM QuantumRange : 65535
Digikam::MagickLoader::load: IM Format       : High Efficiency Image Format
Digikam::StackedView::setViewMode: Stacked View Mode :  1
Digikam::MagickLoader::load: IM blob size    : 97542144

If I missed the point and I have to pre-install or pre-compile something under linux, please point me to relevant source or how-to...

P.S. Digikam Linux AppImage works quite well under Windows Subsystem for Linux (ubuntu) - had to install depoendencies: libsm6, libqt5opengl5, libasound2, manually create /var/lib/dbus/machine-id and redirect X to Windows X Server. Works same as KDE version - shows same artifacts on thumbs for heic instead of images.


(In reply to caulier.gilles from comment #20)
> HEIF support is now managed by the new digiKam ImageMagick loader. By this
> way, we will support plenty new image formats.
> 
> The advantage to use Image Magick instead the QImageLoader is the 16 bits
> color depth support that digiKam can handle natively since more than 12
> years now.
> 
> Other point is the advanced multipage support with Heif. ImageMagick support
> this container, even if digiKam is not yet able to choose the image in set.
> 
> ImageMagick HEIF writing is fully supported, in opposite than QImageLoader
> which is basic. There is also a identify mode avaialble in ImageMagick to
> preload image properties without to decode whole image. This is used while
> image scanning with database.
> 
> HEIF integration is done in Linux AppImage bundle for the moment, not yet in
> Windows and MacOS. Under these OS, MXE and MAcports do not inclide HEIF
> codec due to patents problem. We need to install HEIF codecs before to
> compile ImageMagick.
> 
> Gilles Caulier
Comment 24 caulier.gilles 2019-05-05 19:01:17 UTC
Van you share some HEIC samples to test here ?

Gilles Caulier
Comment 25 caulier.gilles 2019-05-05 19:02:00 UTC
Also, can you show th e HEIF image using display CLI tool from ImageMagick 7 ?

Gilles Caulier
Comment 26 Yarick Yermak 2019-05-06 06:37:56 UTC
(In reply to caulier.gilles from comment #24)
> Van you share some HEIC samples to test here ?
> 
> Gilles Caulier

I will provide my files later, but i have the same problem with file shared earlier in this thread
https://cdn2.online-convert.com/example-file/raster%20image/heic/example.heic
Comment 27 Yarick Yermak 2019-05-06 06:45:05 UTC
(In reply to caulier.gilles from comment #25)
> Also, can you show th e HEIF image using display CLI tool from ImageMagick 7
> ?
> 
> Gilles Caulier

I compiled the latest ImageMagick-7.0.8-44)with heif support and i was able to convert heic files to jpeg with it (uninstalled default installed in the system before).

However, digikam Image has bundled librarires for ImageMagic, when i tried unpacked image and replaced buddled libraries with freshly compiled - it did not work. I had to fix few/replace dependent librarires but finally digikam crashed when it tried to load heic file.

Digikam::DImg::load: "/home/yermak/Pictures/20190501_082735366_iOS.heic"  : Try to load with ImageMagick
Digikam::MagickLoader::load: Try to load image with ImageMagick codecs
digikam: symbol lookup error: /home/yermak/Programs/squashfs-root/usr/lib/libdigikamcore.so.6.2.0: undefined symbol: _ZN6Magick5Image4pingERKSs

I suspect that Digikam Image App goes with broken libraries for ImageMagic and it may works for you in dev environment as you have right ImageMagic installed which is loaded by digiKam. Is it possible?
Comment 28 darrell.langford 2019-06-09 16:50:46 UTC
(In reply to Yarick Yermak from comment #27)
> (In reply to caulier.gilles from comment #25)
> > Also, can you show th e HEIF image using display CLI tool from ImageMagick 7
> > ?
> > 
> > Gilles Caulier
> 
> I compiled the latest ImageMagick-7.0.8-44)with heif support and i was able
> to convert heic files to jpeg with it (uninstalled default installed in the
> system before).
> 
> However, digikam Image has bundled librarires for ImageMagic, when i tried
> unpacked image and replaced buddled libraries with freshly compiled - it did
> not work. I had to fix few/replace dependent librarires but finally digikam
> crashed when it tried to load heic file.
> 
> Digikam::DImg::load: "/home/yermak/Pictures/20190501_082735366_iOS.heic"  :
> Try to load with ImageMagick
> Digikam::MagickLoader::load: Try to load image with ImageMagick codecs
> digikam: symbol lookup error:
> /home/yermak/Programs/squashfs-root/usr/lib/libdigikamcore.so.6.2.0:
> undefined symbol: _ZN6Magick5Image4pingERKSs
> 
> I suspect that Digikam Image App goes with broken libraries for ImageMagic
> and it may works for you in dev environment as you have right ImageMagic
> installed which is loaded by digiKam. Is it possible?

This is on Windows, but I searched the DigiKam install directory, and there is no libmagick++ library.  I see that there are installs from ImageMagick for Windows, so I wonder if this is just a case of a forgotten link to the library for Windows?  I have the Microsoft Codecs bought and installed for my machine so it supports heic thumbnails anyhow outside of DigiKam.
Comment 29 caulier.gilles 2019-06-09 17:32:55 UTC
I'm not surprised by your crash with the unresolved symbols... 

yes imagemagick is cross-compiled for Windows with MXE but current version is limited to 6.9.0. It's old and this version do not support HEIF.

I reported this problem to MXE project to update ImageMagick to 7.x :

https://github.com/mxe/mxe/issues/2335

So, please comment to this file to ask improvements with MXE project...

Gilles Caulier
Comment 30 Maik Qualmann 2019-08-18 06:50:03 UTC
*** Bug 411027 has been marked as a duplicate of this bug. ***
Comment 31 caulier.gilles 2019-09-07 12:40:29 UTC
Good news from Windows user. Look like my report on MXE project is now closed with ImageMagick 7.x support. This want mean that HEIC image will be support soon.
Comment 32 caulier.gilles 2019-09-07 12:40:50 UTC
MXE report : https://github.com/mxe/mxe/issues/2335#event-2615978807
Comment 33 caulier.gilles 2019-09-09 13:22:22 UTC
Git commit b49ec41f1124740072991d30166c96d6721afe75 by Gilles Caulier.
Committed on 09/09/2019 at 13:20.
Pushed by cgilles into branch 'master'.

Compile and link ImageMagick 7.x with HEIF libraries under MXE for Windows targets
Related: bug 411027

M  +14   -7    project/bundles/3rdparty/ext_heif/CMakeLists.txt
R  +6    -6    project/bundles/3rdparty/ext_heif/libde265.pc.in_cmake [from: project/bundles/3rdparty/ext_heif/libde265.pc - 050% similarity]
R  +6    -6    project/bundles/3rdparty/ext_heif/libheif.pc.in_cmake [from: project/bundles/3rdparty/ext_heif/libheif.pc - 054% similarity]

https://invent.kde.org/kde/digikam/commit/b49ec41f1124740072991d30166c96d6721afe75
Comment 34 caulier.gilles 2019-09-09 13:41:41 UTC
For Windows user, HEIF support through ImageMagick codec will be supported with next 6.4.0. Pre-release 6.4.0 Windows installer are under construction from scratch. If all compile fine, files will be available later here:

https://files.kde.org/digikam/
Comment 35 caulier.gilles 2019-09-11 08:05:41 UTC
Windows installers, Linux AppImage, and MacOS package with HEIF support are under construction and will be available for testing today in few hours here:

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

Gilles Caulier
Comment 36 Olli Lupton 2019-09-22 15:22:03 UTC
I tried the MacOS image (git commit 7d6b3812ee9f0a99682c5e7e53a9155c4d1d5e5f) from that link, and after adding heic to the list of extra MIME types, I can see thumbnails and view HEIC images full size!

Unfortunately it seems that the image metadata is not read. In digikam I can only see the most basic properties about the file (size, owner, permissions etc.). I checked on the commandline that my system install of exiftool can see a lot more metadata in these files.

I wasn't sure from the discussion on this ticket whether or not this is expected? Please let me know if I can provide any other useful information.
Comment 37 caulier.gilles 2019-09-22 16:57:38 UTC
Hi,

The HEIC metadata must be read by Exiv2, but HEIC support from this library is not yet finalized. As i see in Exiv2 bugzilla, it's under development, so you need to be patient.

Best

Gilles Caulier
Comment 38 Olli Lupton 2019-09-22 19:55:32 UTC
OK, thanks for the update. I'll keep an eye on the upstream ticket.
For the benefit of anyone else following this thread, the link is https://github.com/Exiv2/exiv2/issues/318

Thanks, Olli
Comment 39 caulier.gilles 2019-09-28 08:09:21 UTC
Git commit 8c604bdfc4f2c93934f359dfa2cfd66e787eb205 by Gilles Caulier.
Committed on 28/09/2019 at 08:03.
Pushed by cgilles into branch 'master'.

First stage to support HEIC images from Apple devices.

New image loader based on libheif+libde265. Only loading image is supported for the moment.
Writing image requires libx265 dependency and is not yet implemented.
HEIC loader support ICC color profile, Exif, and XMP metadata handling.
Code is not yet optimized. Still TODO

* add progress observer
* load metadata stage without to decode full image.

HEIC is now a native format, blacklisted with ImageMagick and QImage loader
Related: bug 411027

M  +1    -0    NEWS
M  +1    -0    core/dplugins/dimg/CMakeLists.txt
M  +3    -3    core/dplugins/dimg/README
A  +173  -0    core/dplugins/dimg/heif/CMakeLists.txt
A  +608  -0    core/dplugins/dimg/heif/dimgheifloader.cpp     [License: GPL (v2+)]
A  +71   -0    core/dplugins/dimg/heif/dimgheifloader.h     [License: GPL (v2+)]
A  +183  -0    core/dplugins/dimg/heif/dimgheifplugin.cpp     [License: GPL (v2+)]
A  +73   -0    core/dplugins/dimg/heif/dimgheifplugin.h     [License: GPL (v2+)]
A  +1    -0    core/dplugins/dimg/heif/libde265/README
A  +359  -0    core/dplugins/dimg/heif/libde265/acceleration.h     [License: LGPL (v3+)]
A  +99   -0    core/dplugins/dimg/heif/libde265/alloc_pool.cc     [License: LGPL (v3+)]
A  +61   -0    core/dplugins/dimg/heif/libde265/alloc_pool.h     [License: LGPL (v3+)]
A  +176  -0    core/dplugins/dimg/heif/libde265/bitstream.cc     [License: LGPL (v3+)]
A  +63   -0    core/dplugins/dimg/heif/libde265/bitstream.h     [License: LGPL (v3+)]
A  +1033 -0    core/dplugins/dimg/heif/libde265/cabac.cc     [License: LGPL (v3+)]
A  +211  -0    core/dplugins/dimg/heif/libde265/cabac.h     [License: LGPL (v3+)]
A  +491  -0    core/dplugins/dimg/heif/libde265/configparam.cc     [License: LGPL (v3+)]
A  +401  -0    core/dplugins/dimg/heif/libde265/configparam.h     [License: LGPL (v3+)]
A  +347  -0    core/dplugins/dimg/heif/libde265/contextmodel.cc     [License: LGPL (v3+)]
A  +130  -0    core/dplugins/dimg/heif/libde265/contextmodel.h     [License: LGPL (v3+)]
A  +36   -0    core/dplugins/dimg/heif/libde265/de265-version.h.in
A  +711  -0    core/dplugins/dimg/heif/libde265/de265.cc     [License: LGPL (v3+)]
A  +437  -0    core/dplugins/dimg/heif/libde265/de265.h     [License: LGPL (v3+)]
A  +1058 -0    core/dplugins/dimg/heif/libde265/deblock.cc     [License: LGPL (v3+)]
A  +29   -0    core/dplugins/dimg/heif/libde265/deblock.h     [License: LGPL (v3+)]
A  +2285 -0    core/dplugins/dimg/heif/libde265/decctx.cc     [License: LGPL (v3+)]
A  +528  -0    core/dplugins/dimg/heif/libde265/decctx.h     [License: LGPL (v3+)]
A  +296  -0    core/dplugins/dimg/heif/libde265/dpb.cc     [License: LGPL (v3+)]
A  +118  -0    core/dplugins/dimg/heif/libde265/dpb.h     [License: LGPL (v3+)]
A  +321  -0    core/dplugins/dimg/heif/libde265/en265.cc     [License: LGPL (v3+)]
A  +218  -0    core/dplugins/dimg/heif/libde265/en265.h     [License: LGPL (v3+)]
A  +95   -0    core/dplugins/dimg/heif/libde265/encoder/algo/algo.cc     [License: LGPL (v3+)]
A  +95   -0    core/dplugins/dimg/heif/libde265/encoder/algo/algo.h     [License: LGPL (v3+)]
A  +113  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-interpartmode.cc     [License: LGPL (v3+)]
A  +108  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-interpartmode.h     [License: LGPL (v3+)]
A  +132  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-intra-inter.cc     [License: LGPL (v3+)]
A  +68   -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-intra-inter.h     [License: LGPL (v3+)]
A  +185  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-intrapartmode.cc     [License: LGPL (v3+)]
A  +149  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-intrapartmode.h     [License: LGPL (v3+)]
A  +176  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-mergeindex.cc     [License: LGPL (v3+)]
A  +70   -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-mergeindex.h     [License: LGPL (v3+)]
A  +114  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-skip.cc     [License: LGPL (v3+)]
A  +72   -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-skip.h     [License: LGPL (v3+)]
A  +178  -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-split.cc     [License: LGPL (v3+)]
A  +88   -0    core/dplugins/dimg/heif/libde265/encoder/algo/cb-split.h     [License: LGPL (v3+)]
A  +202  -0    core/dplugins/dimg/heif/libde265/encoder/algo/coding-options.cc     [License: LGPL (v3+)]
A  +151  -0    core/dplugins/dimg/heif/libde265/encoder/algo/coding-options.h     [License: LGPL (v3+)]
A  +61   -0    core/dplugins/dimg/heif/libde265/encoder/algo/ctb-qscale.cc     [License: LGPL (v3+)]
A  +109  -0    core/dplugins/dimg/heif/libde265/encoder/algo/ctb-qscale.h     [License: LGPL (v3+)]
A  +318  -0    core/dplugins/dimg/heif/libde265/encoder/algo/pb-mv.cc     [License: LGPL (v3+)]
A  +177  -0    core/dplugins/dimg/heif/libde265/encoder/algo/pb-mv.h     [License: LGPL (v3+)]
A  +532  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-intrapredmode.cc     [License: LGPL (v3+)]
A  +297  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-intrapredmode.h     [License: LGPL (v3+)]
A  +46   -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-rateestim.cc     [License: LGPL (v3+)]
A  +101  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-rateestim.h     [License: LGPL (v3+)]
A  +378  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-split.cc     [License: LGPL (v3+)]
A  +126  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-split.h     [License: LGPL (v3+)]
A  +254  -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-transform.cc     [License: LGPL (v3+)]
A  +86   -0    core/dplugins/dimg/heif/libde265/encoder/algo/tb-transform.h     [License: LGPL (v3+)]
A  +313  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-context.cc     [License: LGPL (v3+)]
A  +173  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-context.h     [License: LGPL (v3+)]
A  +428  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-core.cc     [License: LGPL (v3+)]
A  +151  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-core.h     [License: LGPL (v3+)]
A  +340  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-intrapred.cc     [License: LGPL (v3+)]
A  +40   -0    core/dplugins/dimg/heif/libde265/encoder/encoder-intrapred.h     [License: LGPL (v3+)]
A  +80   -0    core/dplugins/dimg/heif/libde265/encoder/encoder-motion.cc     [License: LGPL (v3+)]
A  +32   -0    core/dplugins/dimg/heif/libde265/encoder/encoder-motion.h     [License: LGPL (v3+)]
A  +83   -0    core/dplugins/dimg/heif/libde265/encoder/encoder-params.cc     [License: LGPL (v3+)]
A  +143  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-params.h     [License: LGPL (v3+)]
A  +1730 -0    core/dplugins/dimg/heif/libde265/encoder/encoder-syntax.cc     [License: LGPL (v3+)]
A  +102  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-syntax.h     [License: LGPL (v3+)]
A  +766  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-types.cc     [License: LGPL (v3+)]
A  +409  -0    core/dplugins/dimg/heif/libde265/encoder/encoder-types.h     [License: LGPL (v3+)]
A  +321  -0    core/dplugins/dimg/heif/libde265/encoder/encpicbuf.cc     [License: LGPL (v3+)]
A  +144  -0    core/dplugins/dimg/heif/libde265/encoder/encpicbuf.h     [License: LGPL (v3+)]
A  +106  -0    core/dplugins/dimg/heif/libde265/encoder/sop.cc     [License: LGPL (v3+)]
A  +147  -0    core/dplugins/dimg/heif/libde265/encoder/sop.h     [License: LGPL (v3+)]
A  +1210 -0    core/dplugins/dimg/heif/libde265/fallback-dct.cc     [License: LGPL (v3+)]
A  +96   -0    core/dplugins/dimg/heif/libde265/fallback-dct.h     [License: LGPL (v3+)]
A  +648  -0    core/dplugins/dimg/heif/libde265/fallback-motion.cc     [License: LGPL (v3+)]
A  +104  -0    core/dplugins/dimg/heif/libde265/fallback-motion.h     [License: LGPL (v3+)]
A  +127  -0    core/dplugins/dimg/heif/libde265/fallback.cc     [License: LGPL (v3+)]
A  +28   -0    core/dplugins/dimg/heif/libde265/fallback.h     [License: LGPL (v3+)]
A  +220  -0    core/dplugins/dimg/heif/libde265/image-io.cc     [License: LGPL (v3+)]
A  +121  -0    core/dplugins/dimg/heif/libde265/image-io.h     [License: LGPL (v3+)]
A  +809  -0    core/dplugins/dimg/heif/libde265/image.cc     [License: LGPL (v3+)]
A  +864  -0    core/dplugins/dimg/heif/libde265/image.h     [License: LGPL (v3+)]
A  +364  -0    core/dplugins/dimg/heif/libde265/intrapred.cc     [License: LGPL (v3+)]
A  +678  -0    core/dplugins/dimg/heif/libde265/intrapred.h     [License: LGPL (v3+)]
A  +295  -0    core/dplugins/dimg/heif/libde265/md5.cc     [License: Public Domain]
A  +45   -0    core/dplugins/dimg/heif/libde265/md5.h     [License: Public Domain]
A  +2111 -0    core/dplugins/dimg/heif/libde265/motion.cc     [License: LGPL (v3+)]
A  +131  -0    core/dplugins/dimg/heif/libde265/motion.h     [License: LGPL (v3+)]
A  +446  -0    core/dplugins/dimg/heif/libde265/nal-parser.cc     [License: LGPL (v3+)]
A  +154  -0    core/dplugins/dimg/heif/libde265/nal-parser.h     [License: LGPL (v3+)]
A  +166  -0    core/dplugins/dimg/heif/libde265/nal.cc     [License: LGPL (v3+)]
A  +129  -0    core/dplugins/dimg/heif/libde265/nal.h     [License: LGPL (v3+)]
A  +992  -0    core/dplugins/dimg/heif/libde265/pps.cc     [License: LGPL (v3+)]
A  +163  -0    core/dplugins/dimg/heif/libde265/pps.h     [License: LGPL (v3+)]
A  +111  -0    core/dplugins/dimg/heif/libde265/quality.cc     [License: LGPL (v3+)]
A  +47   -0    core/dplugins/dimg/heif/libde265/quality.h     [License: LGPL (v3+)]
A  +434  -0    core/dplugins/dimg/heif/libde265/refpic.cc     [License: LGPL (v3+)]
A  +61   -0    core/dplugins/dimg/heif/libde265/refpic.h     [License: LGPL (v3+)]
A  +524  -0    core/dplugins/dimg/heif/libde265/sao.cc     [License: LGPL (v3+)]
A  +36   -0    core/dplugins/dimg/heif/libde265/sao.h     [License: LGPL (v3+)]
A  +152  -0    core/dplugins/dimg/heif/libde265/scan.cc     [License: LGPL (v3+)]
A  +43   -0    core/dplugins/dimg/heif/libde265/scan.h     [License: LGPL (v3+)]
A  +501  -0    core/dplugins/dimg/heif/libde265/sei.cc     [License: LGPL (v3+)]
A  +89   -0    core/dplugins/dimg/heif/libde265/sei.h     [License: LGPL (v3+)]
A  +5072 -0    core/dplugins/dimg/heif/libde265/slice.cc     [License: LGPL (v3+)]
A  +313  -0    core/dplugins/dimg/heif/libde265/slice.h     [License: LGPL (v3+)]
A  +1298 -0    core/dplugins/dimg/heif/libde265/sps.cc     [License: LGPL (v3+)]
A  +257  -0    core/dplugins/dimg/heif/libde265/sps.h     [License: LGPL (v3+)]
A  +312  -0    core/dplugins/dimg/heif/libde265/threads.cc     [License: LGPL (v3+)]
A  +148  -0    core/dplugins/dimg/heif/libde265/threads.h     [License: LGPL (v3+)]
A  +739  -0    core/dplugins/dimg/heif/libde265/transform.cc     [License: LGPL (v3+)]
A  +65   -0    core/dplugins/dimg/heif/libde265/transform.h     [License: LGPL (v3+)]
A  +247  -0    core/dplugins/dimg/heif/libde265/util.cc     [License: LGPL (v3+)]
A  +229  -0    core/dplugins/dimg/heif/libde265/util.h     [License: LGPL (v3+)]
A  +562  -0    core/dplugins/dimg/heif/libde265/visualize.cc     [License: LGPL (v3+)]
A  +50   -0    core/dplugins/dimg/heif/libde265/visualize.h     [License: LGPL (v3+)]
A  +602  -0    core/dplugins/dimg/heif/libde265/vps.cc     [License: LGPL (v3+)]
A  +173  -0    core/dplugins/dimg/heif/libde265/vps.h     [License: LGPL (v3+)]
A  +425  -0    core/dplugins/dimg/heif/libde265/vui.cc     [License: LGPL (v3+)]
A  +126  -0    core/dplugins/dimg/heif/libde265/vui.h     [License: LGPL (v3+)]
A  +1    -0    core/dplugins/dimg/heif/libheif/README
A  +615  -0    core/dplugins/dimg/heif/libheif/bitstream.cc     [License: LGPL (v3+)]
A  +288  -0    core/dplugins/dimg/heif/libheif/bitstream.h     [License: LGPL (v3+)]
A  +2887 -0    core/dplugins/dimg/heif/libheif/box.cc     [License: LGPL (v3+)]
A  +857  -0    core/dplugins/dimg/heif/libheif/box.h     [License: LGPL (v3+)]
A  +39   -0    core/dplugins/dimg/heif/libheif/box_fuzzer.cc     [License: LGPL (v3+)]
A  +177  -0    core/dplugins/dimg/heif/libheif/encoder_fuzzer.cc     [License: LGPL (v3+)]
A  +168  -0    core/dplugins/dimg/heif/libheif/error.cc     [License: LGPL (v3+)]
A  +112  -0    core/dplugins/dimg/heif/libheif/error.h     [License: LGPL (v3+)]
A  +115  -0    core/dplugins/dimg/heif/libheif/file_fuzzer.cc     [License: LGPL (v3+)]
A  +1864 -0    core/dplugins/dimg/heif/libheif/heif.cc     [License: LGPL (v3+)]
A  +1221 -0    core/dplugins/dimg/heif/libheif/heif.h     [License: LGPL (v3+)]
A  +66   -0    core/dplugins/dimg/heif/libheif/heif_api_structs.h     [License: LGPL (v3+)]
A  +2299 -0    core/dplugins/dimg/heif/libheif/heif_colorconversion.cc     [License: LGPL (v3+)]
A  +129  -0    core/dplugins/dimg/heif/libheif/heif_colorconversion.h     [License: LGPL (v3+)]
A  +1944 -0    core/dplugins/dimg/heif/libheif/heif_context.cc     [License: LGPL (v3+)]
A  +293  -0    core/dplugins/dimg/heif/libheif/heif_context.h     [License: LGPL (v3+)]
A  +1029 -0    core/dplugins/dimg/heif/libheif/heif_cxx.h     [License: GPL (v3+)]
A  +355  -0    core/dplugins/dimg/heif/libheif/heif_decoder_libde265.cc     [License: LGPL (v3+)]
A  +26   -0    core/dplugins/dimg/heif/libheif/heif_decoder_libde265.h     [License: LGPL (v3+)]
A  +290  -0    core/dplugins/dimg/heif/libheif/heif_emscripten.h     [License: UNKNOWN]  *
A  +837  -0    core/dplugins/dimg/heif/libheif/heif_encoder_x265.cc     [License: LGPL (v3+)]
A  +40   -0    core/dplugins/dimg/heif/libheif/heif_encoder_x265.h     [License: GENERATED FILE]  *
A  +655  -0    core/dplugins/dimg/heif/libheif/heif_file.cc     [License: LGPL (v3+)]
A  +165  -0    core/dplugins/dimg/heif/libheif/heif_file.h     [License: LGPL (v3+)]
A  +302  -0    core/dplugins/dimg/heif/libheif/heif_hevc.cc     [License: LGPL (v3+)]
A  +61   -0    core/dplugins/dimg/heif/libheif/heif_hevc.h     [License: LGPL (v3+)]
A  +802  -0    core/dplugins/dimg/heif/libheif/heif_image.cc     [License: LGPL (v3+)]
A  +130  -0    core/dplugins/dimg/heif/libheif/heif_image.h     [License: LGPL (v3+)]
A  +53   -0    core/dplugins/dimg/heif/libheif/heif_limits.h     [License: LGPL (v3+)]
A  +32   -0    core/dplugins/dimg/heif/libheif/heif_plugin.cc     [License: LGPL (v3+)]
A  +254  -0    core/dplugins/dimg/heif/libheif/heif_plugin.h     [License: GENERATED FILE]  *
A  +148  -0    core/dplugins/dimg/heif/libheif/heif_plugin_registry.cc     [License: LGPL (v3+)]
A  +62   -0    core/dplugins/dimg/heif/libheif/heif_plugin_registry.h     [License: LGPL (v3+)]
A  +36   -0    core/dplugins/dimg/heif/libheif/heif_version.h.in
A  +66   -0    core/dplugins/dimg/heif/libheif/logging.h     [License: LGPL (v3+)]
M  +6    -27   core/dplugins/dimg/imagemagick/dimgimagemagickplugin.cpp
M  +6    -26   core/dplugins/dimg/qimage/dimgqimageplugin.cpp
M  +42   -34   core/libs/dimg/dimg_p.h
M  +11   -2    core/tests/dimg/testdimgloader.cpp

The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page.


https://invent.kde.org/kde/digikam/commit/8c604bdfc4f2c93934f359dfa2cfd66e787eb205
Comment 40 caulier.gilles 2021-04-06 14:25:19 UTC
Git commit 69df44c6fc5777252c6a9f00204344a070787e25 by Gilles Caulier.
Committed on 06/04/2021 at 14:09.
Pushed by cgilles into branch 'master'.

Add metadata extraction support for non supported Exiv2 files.
A new ImageMagick wrapper using internally IM::identify C++ API will list all
ImageMagick properties and host all information to a dedicated Xmp.IMProperties XMP namespace.

Screenshot with FITS astro-photo images taken from NASA/CHANDRA radio-telescope: https://imgur.com/QRHsGOE
Related: bug 417431, bug 435231
FIXED-IN: 4.3.0

M  +3    -2    NEWS
M  +1    -0    core/libs/metadataengine/CMakeLists.txt
M  +7    -0    core/libs/metadataengine/dmetadata/dmetadata.h
M  +5    -2    core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp
C  +75   -53   core/libs/metadataengine/dmetadata/dmetadata_imagemagick.cpp [from: core/tests/dimg/magickidentify.cpp - 060% similarity]
M  +0    -1    core/libs/metadataengine/engine/metaengine.h
M  +2    -2    core/tests/dimg/magickidentify.cpp
M  +1    -1    core/tests/dimg/magickloader.cpp

https://invent.kde.org/graphics/digikam/commit/69df44c6fc5777252c6a9f00204344a070787e25
Comment 41 caulier.gilles 2021-04-06 14:52:03 UTC
Git commit 89fd16a675a68fd84f63299dea53fff3b5e08dee by Gilles Caulier.
Committed on 06/04/2021 at 14:53.
Pushed by cgilles into branch 'master'.

Add FITS file format support in database and image editor
Related: bug 435231, bug 417431

M  +28   -2    core/app/utils/digikam_globals.cpp
M  +31   -17   core/libs/database/coredb/coredbschemaupdater.cpp
M  +2    -0    core/libs/database/coredb/coredbschemaupdater.h

https://invent.kde.org/graphics/digikam/commit/89fd16a675a68fd84f63299dea53fff3b5e08dee
Comment 42 caulier.gilles 2021-04-24 06:33:44 UTC
Read and Write support for HEIC is fully compliant in 7.3.0. Exiv2 0.27.4 support now Base Media Format (HEIC, AVIF) to read write metadata.

For other format, and astro photo FITS or Google web image WEBP, we dedlagte read.write image to ImageMagick. To view metadata from this image, ImageMagick::Identify is used to read properties backported in XMP.

digiKam 7.3.0 has now a powerful metadata viewer based on ExifTool which support plenty of popular or exotic file formats.

See this screenshot of a HEIF sample panorama preview in digiKam with the ExifTool metadata viewer in action.

https://imgur.com/tjjj6Nj
 
I close this file now.

Gilles Caulier
Comment 43 Mehmet gelisin 2021-09-11 18:18:18 UTC
Version:           1.9.0 (using KDE 4.6.5) 
OS:                Linux

I understand from http://www.slipstone.co.uk/ that DNGs can be used to store multiple JPEGs with PI edits done on them, and include that PIE data as well, along with hash verification of each photo to ensure that it has not been corrupted.  I may be incorrect, http://embermanchester.uk/
  but am not sure that the current version of the DNG converter allows for this. Please input this into the DNG converter so that editors could make use of it. http://connstr.net/

Interesting solution, to use ffmpeg to wrap image data in QImage container...
http://joerg.li/ 
Probably other new image container based on wavelets compression and video codec can be handle by this way, JPEG-XR and BPG.

The HEIC container is based on standard ISO :  http://www.jopspeech.com/
Interesting solution, to use ffmpeg to wrap image data in QImage container...

Probably http://www.wearelondonmade.com/ other new image container based on wavelets compression and video codec can be handle by this way, JPEG-XR and BPG.

The HEIC container is based on standard ISO : 

Reproducible: Didn't try

Expected Results:  
Ability to embed multiple JPEG versions of the RAW file using multiple different PIE edits, and choose which JPEG accompanies the DNG (which is shown by default, even though there may be several versions of the JPEG attached/embedded).  Also allow hash verification of each image (as DNG, RAW or JPEG).

Version:           1.9.0 (using KDE 4.6.5) 
OS:                Linux

I understand from http://www.compilatori.com/ that DNGs can be used to store multiple JPEGs with PI edits done on them, and include that PIE data as well, along with hash verification of each photo to ensure that it has not been corrupted.  I may be incorrect, but am not sure that the current version of the DNG converter allows for this. Please input this into the DNG converter so that editors could make use of it.

Reproducible: Didn't try

Expected Results:  
Ability to embed multiple JPEG versions of the RAW file using multiple different PIE edits, and choose which JPEG accompanies the DNG (which is shown by default, even though there may be several versions of the JPEG attached/embedded).  Also allow hash verification of each image (as DNG, RAW or JPEG).

Version:   http://www.logoarts.co.uk/          1.9.0 (using KDE 4.6.5) 
OS:                Linux

I understand from http://www.acpirateradio.co.uk/ that DNGs can be used to store multiple JPEGs with PI edits done on them, and include that PIE data as well, along with hash verification of each photo to ensure that it has not been corrupted.  I may be incorrect, but am not sure that the current version of the DNG converter allows for this. https://waytowhatsnext.com/ Please input this into the DNG converter so that editors could make use of it.

Reproducible: Didn't try
https://www.webb-dev.co.uk/ 
Expected Results:  
Ability to embed multiple JPEG versions of the RAW file using multiple different PIE edits, and choose which http://www.iu-bloomington.com/ JPEG accompanies the DNG (which is shown by default, even though there may be several versions of the JPEG attached/embedded).  Also allow hash verification of http://www-look-4.com/  each image (as DNG, RAW or JPEG).
Comment 44 caulier.gilles 2021-09-12 01:32:49 UTC
To Bugzilla admin: 

Comment #43 sounds like a spam. It have been posted plenty of time in many closed bugzilla entries from "Mehmet gelisin"...

Best Regards

Gilles Caulier