Krita is a painting and image editing application for KOffice.
The plugin consist of following parts;
The Krita Scripting Handbook contains a full reference of all objects and methods accessible from within the scripting backends.
The Handbook is generated from the sourcecode using doxygen and the doxy2doc.py Python script as postprocessor to create visible output from the by doxygen produced XML files.
The following screenshot shows Krita running with it's on the right half displayed scripting-docker that is used to display scripts and fastly execute scripts. The image itself was created using the Random painting Ruby script.
Those extensions are also accessible from within the "Scripts"-menu and are distributed with Krita, so some default extensions are installed together with Krita as part of it, or could be later added and configured on demand using the "Script Manager".
Following sections try to provide an overview of the per default with Krita distributed scripting extensions.
The following screenshot shows the "Python Imaging Library Import" Python script pilimport.py once executed.
Most parts of the pilimport.py Python script are related to GUI and preparation of the import-proccess. The core part of that script, so the part that does actualy do the import, looks like;
# import needed modules and initialize PIL import Krita, Image, ImageFile Image.init() # read the imagefile and convert to RGB pilimage = Image.open("/home/user/myimage.jpg") pilimage = pilimage.convert("RGB") # fetch the Krita layer we like to import to krtlayer = Krita.image().activePaintLayer() # scale the loaded image to fit pilimage = pilimage.resize( (krtlayer.width(), krtlayer.height())) # let's use the progressbar Krita.progress().setProgressTotalSteps( krtlayer.width() * krtlayer.height()) # finally do the import krtlayer.beginPainting("PIL import") it = krtlayer.createRectIterator( 0, 0, krtlayer.width(), krtlayer.height()) while (not it.isDone()): data = pilimage.getpixel((it.x(), it.y())) it.setPixel(list(data)) Krita.progress().incProgress() it.next() krtlayer.endPainting()
The pilexport.py Python script which does export a Krita image to a by the Python Imaging Library supported image-format looks then like;
# import needed modules and initialize PIL import Krita, Image, ImageFile Image.init() # fetch the Krita layer we like to export krtlayer = Krita.image().activePaintLayer() # create the PIL image pilimage = Image.new("RGB", (krtlayer.width(), krtlayer.height())) # finally do the export it = krtlayer.createRectIterator( 0, 0, krtlayer.width(), krtlayer.height()) finesh = it.isDone() while (not finesh): pilimage.putpixel( (it.x(),it.y()), tuple(it.pixel())) finesh = it.next() # and save the result pilimage.save("/home/user/myimage.jpg")
The following three sample scripts are doing the exactly the same thing, that is invert the pixel of an image, and are written code-wise the same way while different scripting backends are used. It is a nice to compare the languages and to show, that the same rich API is accessible to all of them :)