There have been some posts about this before but when I did a search for index or indexed palette in Feature Requests I didn’t see one (posts that mention it, but not in this part of the forum) so I hope this can count as a formal request.
The problem:
In order to check if my pixel art has not accidentally included additional colours, I currently need to use another program to do it. For example, after exporting my pixel art from Krita I can load it into mtpaint and I can see if there are any close to duplicate or other unintended extra colours I need to remove. Yes you can fiddle with the Same Color Selector in Krita and fiddle with the settings or possibly generate a palette from the current file, but it’s easier to judge what colours need to be removed in a program that will represent the colours in an indexed mode so you don’t have to keep regenerating a new palette.
After loading it in mtpaint, which will load the colour palette along the side, I can copy the HEX code or note its location in the file, then fix it in Krita. This can be a very time consuming process if you’ve made a lot of errors, so I try to avoid it as much as possible in Krita by being careful when generating and re-using palettes since there is no restriction on the number of colours in the image.
Benefits of an Indexed Palette
I don’t program software so I don’t know what is happening behind the scenes to have an image restricted to an indexed palette, but these are the kinds of things you can do with an indexed palette like in mtpaint or GrafX2 that you can’t do in Krita currently with a non-indexed palette:
- if you change the indexed colour it will automatically change the colour in the image (a bit like how global colours work in Photoshop - if some people are more familiar with this idea)
- if you shift the position of the palette colour, it will change the colour in the artwork to the new corresponding position (since colours are mapped by palette number and their position in the palette is important in that way).
- in file settings, you can change the colour number associated with the file (e.g. from 8 to 16, or to 32, etc.) which will let you map new colours if you want to expand the palette or delete colours (if you want to restrict them). I think the upper limit is 256 colours due to the maximum supported colours of an indexed PNG/ GIF file.
- automatically reduced file size due to the relationship between colour number and file size
Some cool things in GrafX2 or mtpaint:
- When reducing the palette, there’s a setting where you can reduce similar-colours or merge same-looking colours together.
- In mtpaint there’s a palette animation mode, where you can create animations by swapping the position of colour index colours. This can create some really cool effects.
- In both, gradients or dithering patterns can be restricted to the indexed colour range, something that does not seem to exist currently in Krita
I mention the above not as a request but to demonstrate that an indexed mode can open additional possibilities for artists.
Colour versus File Management
Another possible benefit is this could lead to improvements in how colour management works in Krita. Or maybe file management is a better term because I have a suspicion that maybe the way indexed palettes work is because the artwork is being saved internally in an indexed file format, not because it is trying to map a colour space using miniCMS (which I think I read someone comment on once why Krita doesn’t have an indexed mode). This could allow Krita to have an indexed palette mode that is running parallel to colour management in miniCMS, because it’s not like you can’t load indexed PNGs in Krita… (But I don’t know enough about either to say how these systems would work together, I just want to mention that it could be possible. The impression I’ve mainly gotten about indexed pixel art is that it is working in a RGB colour space, but limiting the colours through the file format (e.g. PNG), not by remapping colour space.)
Indexed Palette Mode in Krita’s Interface
Some ways I can see how this would integrate with other parts of Krita:
- On startup, the Create a New Document dialog, having options for the colour mode under the “Color” section, maybe a Model option above Grayscale/Alpha would be Monotone/Alpha, or RGB/Indexed Palette (I think most indexed colour formats are RGB? PNG, BMP?) Colour Expression Mode in Clip Studio Paint example - their monochrome layer also includes transparency.
- In future, the possibility to manage different layers separately (like in Clip Studio Paint which can let you change between layer modes from Colour, Grayscale, Monotone), which can help reduce file size. This depends how layers are represented internally probably. This is something that could be useful in future more a Nice to Have, but for the moment just having indexing apply to an entire file would be great
- In the Palette Editor, under Palette Options, there could be a Maximum Colours setting as a way of accessing the colour number settings in the palette area.
- Any ‘anti-alias’ type settings would need to be controlled to use the colours in the indexed file, or just be aliased. There is a lot you could potentialy do here, but a way to have any anti-aliased options/buttons be disabled if you are in a Monotone mode would save some hassles with manually disabling it all in the UI. The way Clip Studio Paint does it is that some settings will become ‘greyed out’ or disabled, with a little tooltip or notice somewhere that you cannot use this setting because the file is in Monochrome mode / Grayscale Mode / whatever.
Pixel Art and Manga / Comic Creators could Benefit
Mainly I’m asking about an indexed palette in terms of pixel art, but indexed mode would be incredibly useful for manga and comics which at least in terms of manga would have a limited palette (black and white). This could help reduce file size as well since the colour depth of an image is related to its file size. Could they be accomplished using the same approach of having an indexed colour mode?
But why use Krita for pixel art? Why not use mtpaint or GrafX2 (open source) or Aseprite?
I have Aseprite and there are some things that’s it’s just very good at in terms of pixel art that I don’t really expect (though it would be nice) for Krita to have in future. I am aware that Krita is not a pixel art program however you can make pixel art in it and it’s very good at it, actually. I love how much you can do with it. When you open GrafX2 or mtpaint you can only really make pixel art with them, with Krita you can choose what to make. Because GrafX2 and mtpaint are open source (Aseprite is too technically), possibly some Krita devs can take a look at the code and figure out how they’re saving images as indexed for ideas? But the “why not use GrafX2 or mtpaint” is personally I find their UI really hard to understand and use. It’s very easy to use Krita’s, by comparison.
I’ve created dithering brushes with Krita’s engine so you can make pixel art with it, as long as you are careful with controlling the palette you can do a lot, there is flexibility with anti-aliasing and aliased settings, and the new Pixel Smoothing option is awesome, and pixel brush tools, you can make some fantastic artwork with it. However I think now we have all these great things, the availability of an indexed palette would really convert a lot of pixel artist illustrators to move to Krita. It would also benefit comic and manga artists as well and overall give illustrators more control over the colours in their image which can only be a positive.
I love Krita because I can make illustrations with it and I can make pixel art with it (and manga!). Krita has a great interface and is a fantastic tool for drawing. Some things I love about making pixel art in Krita are the bezier and curve tools, I find them much easier to use than the ones in Aseprite or GrafX2. The user interface for Krita is familiar and accessible to illustrators and is very powerful.
In short, I’d really just love an indexed palette mode in Krita. ![]()