GIMP plug-ins, scripts and helpers

akkana, updated 🕥 2022-11-14 17:19:23

A collection of GIMP scripts and plug-ins by Akkana Peck.

These are all licensed under the GPL v2 or (at your option) any later GPL. There's further discussion of some of them on my software page:

I'm working on translating these plug-ins to the new API in Gimp 2.99/3.0. That API isn't stable yet, but you'll find the plug-ins that have been translated so far under the "gimp3" directory.

=============== SAVE/EXPORT PLUG-INS (PYTHON):

More info: Meant to be the One True Save/Export plug-in, on ctrl-S and ctrl-Shift-S. It saves whether the type is XCF or other, it can automatically save a copy in a different format, and it can even scale that copy and remember the scaling. Save or export, marking the current image clean. This was an initial quick hack for people who dislike the Save vs. Export split introduced in GIMP 2.8; it's mostly obsoleted now by Saver.

=============== OTHER PYTHON PLUG-INS: Bend a layer (e.g. a text layer) in a circular arc. Also a good demo of how to use pixel regions in Python. Interactively draw an arrow in a new layer, using a rectangular selection as a guide. Text effect similar to bevel and drop shadow, but different. Change font face and size for all text layers in the current image. Export a scaled version of the current image, remembering name & scale for the next export. Show a dialog offering to export all open images. Currently this is just a skeleton for other people to build on. Conway's Game of Life (more or less, with colors added). No, there's no practical use for it. It's just a silly demo. Migrate 2.6 tool presets to 2.8 (which doesn't happen automatically). Demonstrate all possible UI options for pygimp registration dialogs. Make wallpaper from the selection, based on aspect ratio. Has a few screen size presets (e.g. 1366x768, 1680x1050) and saves to a known place, e.g. ~/Backgrounds/1366/. It's recommended that you set rect select presets for aspect ratios like 16:8, 4:3, 1366:768 etc. in order to use this.

=============== SCRIPT-FU:

arclayer.scm Bend a layer (e.g. a text layer) in a circular arc. Much much slower than the Python version, due to lack of pixel regions. Nore info:

fibonacci.scm Draw a Fibonacci (golden ratio) spiral around Fibonacci number boxes.

gimplabels/ Create label/businesscard templates, and pages of them, based on Avery and similar templates imported from glabels. Fiddly to use since you have to figure out your printer's "slop factor". More info:

pandora-combine.scm Stitch a series of images (loaded as layers in one image) into a panorama. Doesn't do any smart matching based on the image contents; it just gives you initial fixed spacing and layer masks; then you can drag the images around to choose final placement, and edit the layer masks as needed. More info:

stack.scm Make an averaged image stack: combine all the layers with opacity 1/num_images.

sf-helloworld.scm A simple script-fu demonstration (used in GIMP scripting talks).


Adding options for partial font adaption

opened on 2020-05-01 15:25:16 by makoehr

This patch allows to modify only parts of the font change (size/face/color).

cutout doesn't work for selections touching three sides of an image

opened on 2019-03-06 16:15:49 by jamadagni

Hello. Many thanks for your cutout plugin. I wish it were built-in.

Anyhow, I'm using it with GIMP 2.8.22 on Kubuntu Bionic LTS.

I find that if I make a selection touching three sides of an image, and try to run the operation on it, the plugin gives an error:

Plug-In 'Cut out selected band' left image undo in inconsistent state, closing open undo groups.

Then a separate message:

Calling error for procedure 'gimp-edit-paste':
Procedure 'gimp-edit-paste' has been called with an invalid ID for argument 'drawable'. Most likely a plug-in is trying to work on a layer that doesn't exist any longer.

After this, the Undo History shows as if I tried to do a full image select and then tried to apply the filter.

Granted, the plugin isn't really needed for removing that kind of a selection and we can just do invert + crop, but it really isn't that elementarily different from making a slice selection in the process of removing unwanted parts of an image, and it shouldn't throw a weird error anyhow.

Hope this can be fixed.

(BTW you have a comment that says it's ridiculously difficult to make a selection to exactly the height or width of an image. But it's not really difficult. You just have to zoom out and you can select from outside the image bounds and it will result in full-width/height selection. Just mentioning in passing.)

opened on 2018-10-08 09:06:15 by Zwergkrug


does still work with Gimp 2.8.22?

I installed the plugin. If I click Filters->generic->Change Font in all Text layers a window opens where I can fill in a new font size/a new font. But after clicking OK none of the text layers in my image changed size/font. It would be great to get this amazing plugin to work.

Error with export-scaled

opened on 2017-06-24 07:39:48 by sapper-trle

line 228, in python_export_scaled pdb.gimp_image_merge_visible_layers(copyimg, CLIP_TO_IMAGE) NameError: global name 'copyimg' is not defined Saved an image other than .xcf.

Also no text was being displayed in the SpinButton boxes when the dialog was shown.

I had to add second argument to SpinButton constructor to have the text shown.

percent_e = gtk.SpinButton(adj, 0) width_e = gtk.SpinButton(adj, 0) height_e = gtk.SpinButton(adj, 0)

export-scaled: Update for latest GIMP needed?

opened on 2015-06-11 09:41:16 by dsl101

I just came across this - a real time saver. Unfortunately, I'm having problems getting it to work. When I 'Export Scaled...' via the menu, I choose a path and filename, but no files are created. Instead, I see a new 'Untitled' image in the Images list, and I can open a new view and then save it. But that's almost as much effort as before!

I'm using GIMP 2.8.14 (portable, if that makes any difference). Just wondering if perhaps something has changed on the GIMP side that would stop it working...

Internationalization (

opened on 2015-05-20 07:40:31 by Smile4ever

Hi. I would like to translate to Dutch (all strings). What's the best way?

Akkana Peck

Linux, Python and open source generalist. I like maps, data, astronomy, image editing and organizing, government transparency projects, and microcontrollers/SBC

GitHub Repository