KQuickImageEditor 0.7.0 has been released
Noah Davis
noahadvs at gmail.com
Mon Aug 31 20:46:17 BST 2026
https://download.kde.org/stable/kquickimageeditor/kquickimageeditor-0.7.0.tar.xz.mirrorlist
Version 0.7.0 is a feature release. It also has changes that fix bugs in
Spectacle and Photos (aka Koko).
This release includes the following noteworthy changes:
- Removed OpenCV dependency by replacing the stack blur with a Qt
Concurrency and Highway SIMD library based implementation.
- When using AnnotationDocument::setBaseImage, the QImage argument will
have its data format converted to the closest QPainter optimal format with
four 8 or 16 bit channels (Format_RGB32, Format_ARGB32_Premultiplied,
Format_RGBX8888, Format_RGBA8888_Premultiplied, Format_RGBX64,
Format_RGBA64_Premultiplied). If the QImage does not have a valid
QColorSpace, it will be set to sRGB.
- AnnotationDocument::annotationsImage now has an sRGB QColorSpace.
- Added color adjustment API.
- Set AnnotationViewport::colorMatrix with a QMatrix4x4 to preview
RGB color adjustments to the base image. Linear adjustments can be done
with the top 3 rows. Non-linear adjustments can be done with the bottom
row. It's like a 4x4 matrix for 3D graphics, except your dimensions are
red/green/blue. The matrix is applied in a linear colorspace.
- Set AnnotationViewport::gammaAdjustment to preview gamma
adjustments to the base image. It will be applied after the
matrix and will
be combined with the gamma of the original colorspace. Since gamma powers
are inverted when applied to linear colorspace colors,
gammaAdjustment will
also be inverted. Internally, the value is cast to a float. 1±0.00001 and
≤0.00001 do not adjust the gamma. To prevent tiny changes caused by
floating point inaccuracy, we compare values in the same way as the float
variants of qFuzzyCompare and qFuzzyIsNull.
- Use AnnotationDocument::applyColorAdjustment to finalize the
adjustment. It can still be undone via the undo/redo system, but I said
"finalize" because it's a slow operation. In future releases, I should
optimize this with multi-threading and SIMD, but it will still be a good
idea to use the preview API before finalizing. There may be subtle
differences between the preview and the final adjustment since
the preview
has texture smoothing.
- Currently, the preview only looks correct for sRGB images.
- Regions covered by highlighter, blur and pixelate annotations will
look wrong until the adjustment is finalized because they copy regions of
the base image. I'd like to find a good way to solve this issue
eventually.
- In QML, use Utils.brightnessMatrix and Utils.contrastMatrix
functions to get matrices for brightness and contrast effects.
You can also
build your own matrices using general mathematical concepts and color
theory. Not all of the APIs in Utils are intended for general
use yet, but
those two are. saturationMatrix and relativeLuminanceMatrix may be used
together, but they are currently experimental since I haven't figured out
how they will need to change for non-sRGB image support.
- Added repainted signal to AnnotationDocument. AnnotationDocument
periodically repaints annotationsImage and canvasBaseImage. The repainted
signal is emitted when finished.
- AnnotationDocument::renderToImage always returns the latest image. If
necessary, it will wait for repaints to finish before returning.
- Annotation shadows don't jitter as much while being drawn or resized.
- Added hasSelectionChanged and optionsChanged signals to
SelectedItemWrapper. Originally, this class used
AnnotationDocument::selectedItemWrapperChanged to tell QML components that
the selected item changed. In theory, this would mean that hasSelection and
options would also be updated in QML. However, the "whole object changed"
pattern is quite annoying to deal with in QML. If you aren't very careful
about ensuring that you don't make too direct of a binding to the object's
properties, you will often fail to get notified about changes. This caused
a bug in Spectacle and Photos where selected annotation options wouldn't
show until you selected the tool type of a selected annotation and went
back to the selection tool.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-announce/attachments/20260831/88795400/attachment.htm>
More information about the kde-announce
mailing list