Export Gimp XCF Layers as Jpegs
November 30, 2011
I use The Gimp a lot for my web and image work, so much so that I find it easier and more logical than photoshop.
Most of the designers I work with use Photoshop, so I can’t escape it, but I generally avoid Photoshop whenever possible.
Often, I use gimp to make slides, using a single xcf file + layers to create the slideshow, then saving them out individually. This can be a little time consuming, especially for larger slideshows or files with a bunch of layers.
So, I went in search for a plugin to export layers to jpegs in Gimp. I did not find anything that was exactly what I needed. I did, however, find something that was designed for PNG files, so I made a few changes and it seems to work fine.
It is possible I did not look hard enough, but the following python script works well and is quite simple.
Exporting Individual Layers in Gimp to Jpegs
The following python script was first posted here by Kevin Payne. Thanks for the productivity boost!!!
I only made a few small changes, mainly to enable jpg support, remove spaces from names, and changing the menu location.
You may also want to check out the plugin to export Visible Layers as JPG
Exports the layers of a XCF file as individual jpg images.
The name of the layer is used as the filename, except spaces are replaced with “_”. The files are saved to the same directory as the XCF image.
Option is added under “File->Save->Export as JPGS
In linux save to ~/.gimp-26/plug-ins/SaveAsJpeg.py
Make sure to chmod +x the file
Note that the gimp folder name might be different.
If you need more help: http://en.wikibooks.org/wiki/GIMP/Installing_Plugins
# Author: Kevin Payne, small modification by John
# Copyright 2011 Kevin Payne
# License: GPL v3
# GIMP plugin to export the layers of an .xcf as jpg images
# each jpg file has the name of the layer
# For PhotoComix:- http://gimpchat.com/viewtopic.php?f=9&t=985#p10807
from gimpfu import *
# something to help with debugging
dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, Message)
# unique_filename from http://stackoverflow.com/questions/183480/is-this-the-best-way-to-get-unique-version-of-filename-w-python
counter = 1
file_name_parts = os.path.splitext(file_name) # returns ('/path/file', '.ext')
file_name = file_name_parts + '_' + str(counter) + file_name_parts
counter += 1
# this is the bit that does all the work
layer_ids = img.layers # get the layers in the image
directory_name = os.path.dirname(img.filename) # where is the source image
num_layers = len(layer_ids)
for layer_num in range (0, num_layers): # work through layers (change to "num_layers-1" if you don't want the bottom layer)
layer_name = pdb.gimp_drawable_get_name(layer_ids[layer_num])
# replace any illegal characters to be on the safe side
layer_name = layer_name.replace(":", ";")
layer_name = layer_name.replace("/", ";")
layer_name = layer_name.replace("\\", ";")
layer_name = layer_name.replace("?", ";")
layer_name = layer_name.replace("*", ";")
layer_name = layer_name.replace("\"", ";")
layer_name = layer_name.replace(" ", "_")
# build the new file path - puts the saved layers in the same place as the source image
jpg_file = os.path.join(directory_name, layer_name + ".jpg")
jpg_file = unique_filename(jpg_file)
pdb.file_jpeg_save(img, layer_ids[layer_num], jpg_file, jpg_file, 1, 1, 1, 1, 0, 1, 1, 1, 1)
# The End of the main routine
# menu registration
"Export Layers as JPGS",
"Export Layers as JPGS",
"Export as JPGS",
(PF_IMAGE, "image", "Input image", None),