Krita

krita.org/en
Krita

Digital painting application. Free and open source (backed by KDE), with cross-platform support, Krita is popular among both professional and amateur artists due to it's comprehensive feature set, and intuitive UI

Open Source

Krita Source Code

Author

KDE

Description

Krita is a free and open source cross-platform application that offers an end-to-end solution for creating digital art files from scratch built on the KDE and Qt frameworks.

Homepage

https://invent.kde.org/graphics/krita

License

GPL-3.0

Created

09 Oct 15

Last Updated

16 Jun 26

Latest version

v42.0-beta2

Primary Language

C++

Size

9,614,390 KB

Stars

9,883

Forks

803

Watchers

9,883

Language Usage

Language Usage

Star History

Star History

Top Contributors

Recent Commits

  • Dmitry Kazakov (16 Jun 26)

    Fix build of the updated Knife Tool

  • l10n daemon script (16 Jun 26)

    GIT_SILENT Sync po/docbooks with svn

  • l10n daemon script (16 Jun 26)

    GIT_SILENT made messages (after extraction)

  • Agata Cacko (23 May 26)

    Fix crash on null event pointer in Abstract Input Action The check in kis_abstract_input_action.cpp is for sure valid because it happens within KisShortcutMatcher::tryRunSingleActionShortcutImpl, and it has a warning that the event can be null. This commit also includes some more sanity checks that might be upgraded into KIS_SAFE_ASSERT if needed. BUG:520581

  • Freya Lupen (28 May 26)

    Fix Display Selection action check state The selection's visibility was moved to m_selectionVisibility, which still got toggled, but the action's check state still used visible(), which no longer changes.

  • Wolthera van Hövell tot Westerflier (12 Jun 26)

    Initialize fallback color history model.

  • Dmitry Kazakov (11 Jun 26)

    Streamline the color history API The interface of global and per-document color history is now the same. It consists of three methods: * colorHistoryColors()/setColorHistoryColors() to manipulate with the entire list at once during intitialization and saving * colorHistoryModel() returns a pointer to a KisUniqueColorSet, that is used for subscribing for changes in the history All places, where KisUniqueColorSet is used, it is now called as "model", because that is essentially what it is, an abstract class representing a unique set of colors with updates and stuff. The main problem of this patch is that now KisCanvasResourceProvider does **not** store the actual color history, but stores a model instead. It means that the update signals for ColorHistoryModel resource type are basically useless. Ideally, it would be nice if we didn't expose the model into the document, but stored only "a value" inside the document (in a form of QList<KoColor> or KisHistoryList<KoColor>). And all the API calls would manipulate with this "value", which could be stored in KisCanvasResourceProvider and KoDocumentResourceManager. Then it would be consistent with the rest of Krita and update signals would work. But that would require a lot of changes. We could return to this idea when KisColorHistory is dropped.

  • Dmitry Kazakov (11 Jun 26)

    Fix copy-ctor of KisUniqueColorSet

  • Wolthera van Hövell tot Westerflier (08 Jun 26)

    Copy color history pointer properly in the document.

  • Wolthera van Hövell tot Westerflier (02 Jun 26)

    Test pointer in WGColorPatches now we sometimes set those to nullptr.

  • Wolthera van Hövell tot Westerflier (02 Jun 26)

    Implement copy constructor for KisUniqueColorSet and fix a bunch of pointers. Also fix the color history popup in the wide gamut selector.

  • Wolthera van Hövell tot Westerflier (09 May 26)

    Rework the color history on the advanced selectors' side. This'll prevent it from doing spurious updates and listening to updates from the wide gamut selector.

  • Wolthera van Hövell tot Westerflier (08 May 26)

    Add "per document color history" to wide gamut selector.

  • Wolthera van Hövell tot Westerflier (08 May 26)

    Don't leak color history.

  • Wolthera van Hövell tot Westerflier (08 May 26)

    Use KisUniqueColorSet for the saved color history, implement in wide gamut selector.

  • Agata Cacko (09 Apr 26)

    Add unit tests to CutThroughShapeStrategy There was no unit tests for CutThroughShapeStrategy, even though it contained quite a lot of logic already. This commit adds unit tests for willShapeBeCut... functions.

  • Agata Cacko (09 Apr 26)

    Streamline the logic in CutThroughShapeStrategy Before this commit, the logic in CutThroughShapeStrategy was more adjusted to be used inside a for function with a break to get out early. Since it's inside a function now, there is no need for that, it can return early for both true and false. This commit streamlines the logic, making it more readable.

  • Agata Cacko (08 Apr 26)

    Remove unnecessary performance check in CutThroughShapeStrategy Before this commit, in CutThroughShapeStrategy in Knife Tool the willShapeBeCutGeneral function would perform two checks that roughly compared the shape outline with the gap. However the second check was roughly as performant as the first one, and it would catch all the cases the first one would (and more), so removing the first check doubles the average performance of this function. (In case the shape would be caught by the first check, since the second check is just as performant, nothing changes; in case the shape would only be caught by the second one, it makes the performance twice as good because the first check isn't done. The average performance of 0.48 of the original function has been calculated from manual testing with timers). So this commit removes the first check. It also makes the initializeGapShapes function more performant as well, since it doesn't need some of the shapes now.

  • Agata Cacko (08 Apr 26)

    Improve performance within willShapeBeCutPrecise Before this commit, going through all the points on the shape would happen no matter what. This commit makes it conditional by moving the if statement to envelop it instead of enveloping only the return statement.

  • Agata Cacko (08 Apr 26)

    Make willShapeBeCut... functions static in Knife Tool Before this commit, the willShapeBeCut functions would be non-static. This commit makes them static, so they can be used in unit tests.

  • Agata Cacko (08 Apr 26)

    Avoid a crash in CutThroughShapeStrategy This wouldn't really happen in normal circumstances, but it can happen in unit tests.

  • Agata Cacko (08 Apr 26)

    Improve coding style in CutThroughShapeStrategy

  • Agata Cacko (08 Apr 26)

    Avoid creating a command in Knife Tool unnecessarily Before this commit, a command would be created unnecessarily despite the function returning early a moment later. This commit ensures that the command is only created later on, when it's actually (probably) needed.

  • Agata Cacko (08 Apr 26)

    Move initializing gap shapes to a separate static function Before this commit, initializing the gap shapes was inside finishInteration() in CutThroughShapeStrategy.cpp . This commit moves it to a static function so it can be used in unit tests as well.

  • Agata Cacko (08 Apr 26)

    Move initializing outline to a separate static function Before this commit, initializing the outline was inside finishInteration in CutThroughShapeStrategy.cpp . This commit moves it to a static function so it can be used in unit tests as well.

  • Agata Cacko (14 Mar 26)

    Close and merge KoPathShapes coming from QPainterPath Before this commit, converting a QPainterPath into a KoPathShape would result in open KoPathShapes. If the QPainterPath considered a subpath "closed", it would only result in an open KoPathShape that has the same start and end point, which meant that the user would have to drag two points separately to a new location instead of draging just one of them like a normal corner. This fixes the issue with the Knife Tool operations resulting in open shapes. Note: the KopathShape now intentionally closes every subpath whose start and end point are in the same place. Note 2: there is a chance that if the points aren't in the same place, the converting code should still call close(); however I don't know KoPathShape enough to tell if that's correct or needed.

  • Agata Cacko (11 Mar 26)

    Delete removing shapes without need in Knife Tool I don't know where the confident assumption that all shapes should be cut out is coming from. Might be an artifact of some older version of the code. It doesn't seem correct now.

  • Ricky Ringler (15 Jun 26)

    518235-Out-of-Bounds-Selection-Inversion When inverting a selection with any of the selection tools, but notably the rectangle tool, we're using the default bounds, causing inverted selections to grab more pixels than what the user selected with the `KisSequentialIterator`. For example: When a selection was 2840x1928 pixels, inverting the selection created a selection of 2880x1984. We should just use the image's actual extent. Closes #[518235](https://bugs.kde.org/show_bug.cgi?id=518235) ## Test Plan * Tested rectangle inversion while entire selection was NOT inside the canvas. * Tested rectangle inversion while entire selection was inside the canvas but not the same size as the canvas. * Tested rectangle inversion while selection was the same size as the canvas. ## Formalities Checklist - [x] I confirmed this builds. - [x] I confirmed Krita ran and the relevant functions work. - [x] I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!) - [x] I made sure my commits build individually and have good descriptions as per [KDE guidelines](https://community.kde.org/Policies/Commit_Policy). - [x] I made sure my code conforms to the standards set in the HACKING file. - [x] I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per [KDE Licensing Policy](https://community.kde.org/Policies/Licensing_Policy). - [ ] Does the patch add a user-visible feature? If yes, is there a documentation MR ready for it at [Krita Documentation Repository](https://invent.kde.org/documentation/docs-krita-org)? **_Reminder: the reviewer is responsible for merging the patch, this is to ensure at the least two people can build the patch. In case a patch breaks the build, both the author and the reviewer should be contacted to fix the build._** **_If this is not possible, the commits shall be reverted, and a notification with the reasoning and any relevant logs shall be sent to the mailing list, _****[email protected]_****_._**

  • Wolthera van Hövell tot Westerflier (29 May 26)

    Fix FFmpeg 7.0+ to render HDR animations We shoudl use non-constant luminance coefficients so newer ffmpeg will render hdr animations. Also fix the order of the mastering display info. Related FFmpeg issue: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/20546 BUG:520669

  • Luna Lovecraft (11 May 26)

    Fix shape selection converting to pixel selection when moved Before this commit vector selection got flattened into a pixel selection when transformed in any way, destroying vector data. Now it is only done with more complex transformations, allowing the user to move a selection while preserving its vector data

Krita Security

2.5/10

Repo Security Summary

Updated 01 Jun 26

  • Code-Review 0/10
  • Packaging N/A
  • Maintained 10/10
  • Dangerous-Workflow N/A
  • Token-Permissions N/A
  • CII-Best-Practices 0/10
  • License 10/10
  • Signed-Releases N/A
  • Branch-Protection 0/10
  • SAST 0/10
  • Security-Policy 0/10
  • Binary-Artifacts 3/10
  • Fuzzing 0/10
  • Pinned-Dependencies N/A

Krita Website

Website

Krita | Digital Painting. Creative Freedom.

Krita is a professional FREE and open source painting program. It is made by artists that want to see affordable art tools for everyone.

Redirects

Redirects to https://krita.org/en/

Security Checks

All 65 security checks passed

Server Details

  • IP Address 85.10.198.55
  • Hostname tyran.kde.org
  • Location Nuremberg, Bayern, Germany, EU
  • ISP Hetzner Online GmbH
  • ASN AS24940

Associated Countries

  • US US
  • DE DE
  • NL NL
  • GB GB

Safety Score

Website marked as safe

100%

Blacklist Check

krita.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Krita Reviews

More Image Editors

About the Data: Krita

Change History

  • Added

API

You can access Krita's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/krita

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Krita

Help your friends compare Image Editors, and pick privacy-respecting software and services.
Share Krita and Awesome Privacy with your network!

View Image Editors (8)