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

Dmitry Kazakov <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |CONFIRMED
     Ever confirmed|0                           |1
                 CC|                            |[email protected]

--- Comment #2 from Dmitry Kazakov <[email protected]> ---
I can confirm the issue. The problem happens with these brush presets:
https://krita-artists.org/t/memileo-impasto-brushes/92952

The reason:

The presets have a huge texture and a huge brush in the PNG's metadata area
saved as base64+XML. So, every time we load the resource (even when this
resource is already present in the database), Krita has to:

1) Decompress the metadata block with "inflate" algorithm. It basically,
decompresses a chunk that is already compressed and base64 encoded.
2) Iterate through this XML document with huge CDATA sections.

We have multiple solutions for the problem:

1) Just don't save "embedded resources" within the preset, when the preset is
saved into a bundle (since bundle also includes them when saving)

2) Save the embedded resources in a separate PNG-metadata section
    * the main "preset" section should still contain the metadata of the
embedded resources, but shouldn't contain the CDATA section.
    * the CDATA sections should be stored in a separate PNG-metadata section
that is loaded only when needed

3) Do not use QImageBuilder and use libpng directly to disable compression on
that extra PNG-metadata section (sounds a bit too much)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to