This file calls Paint Dot Net from Gimp.So you can then edit any part of the image you want and Gimp exports it back to Gimp as the top layer.
Written by Rob A for XnView call for PS filters (8bf), and rewritten to call Paint Dot Net by me.
More info here -
http://www.gimpchat....c.php?f=9&t=970
#!/usr/bin/env python
'''
Paint.NETShell.py
Call Paint.Net to allow use of Paint.Nets filters. Windows Only.
Author:
Rob Antonishen - Rod D changed to call Paint Dot Net
Version:
0.3 Fixed to work with filters that change alpha
this script is modelled after the mm extern LabCurves trace plugin
by Michael Munzert [url="http://www.mm-log.com/lab-curves-gimp"]http://www.mm-log.com/lab-curves-gimp[/url]
License:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The GNU Public License is available at
[url="http://www.gnu.org/copyleft/gpl.html"]http://www.gnu.org/copyleft/gpl.html[/url]
'''
from gimpfu import *
import shlex
import subprocess
import os, sys
import tempfile
def plugin_main(image, drawable, visible):
pdb.gimp_image_undo_group_start(image)
# Copy so the save operations doesn't affect the original
if visible == 0:
# Save in temporary. Note: empty user entered file name
temp = pdb.gimp_image_get_active_drawable(image)
else:
# Get the current visible
temp = pdb.gimp_layer_new_from_visible(image, image, "Visible")
image.add_layer(temp, 0)
buffer = pdb.gimp_edit_named_copy(temp, "PaintDotNETShellTemp")
#save selection if one exists
hassel = pdb.gimp_selection_is_empty(image) == 0
if hassel:
savedsel = pdb.gimp_selection_save(image)
tempimage = pdb.gimp_edit_named_paste_as_new(buffer)
pdb.gimp_buffer_delete(buffer)
if not tempimage:
raise RuntimeError
pdb.gimp_image_undo_disable(tempimage)
tempdrawable = pdb.gimp_image_get_active_layer(tempimage)
# Use temp file names from gimp, it reflects the user's choices in gimp.rc
# change as indicated if you always want to use the same temp file name
tempfilename = pdb.gimp_temp_name("png")
#tempfilename = os.path.join(tempfile.gettempdir(), "Inkscapetempfile.png")
# !!! Note no run-mode first parameter, and user entered filename is empty string
pdb.gimp_progress_set_text ("Saving a copy")
pdb.file_png_save_defaults(tempimage, tempdrawable, tempfilename, tempfilename)
# Command line - Change to match where you installed XnView
command = "\"C:\\Program Files\\Paint.NET\\PaintDotNet.exe\" \"" + tempfilename + "\""
args = shlex.split(command)
# Invoke external command
pdb.gimp_progress_set_text ("run PaintDotNET...")
pdb.gimp_progress_pulse()
child = subprocess.Popen(args, shell=False)
child.communicate()
# put it as a new layer in the opened image
try:
newlayer2 = pdb.gimp_file_load_layer(tempimage, tempfilename)
except:
RuntimeError
tempimage.add_layer(newlayer2,-1)
buffer = pdb.gimp_edit_named_copy(newlayer2, "PaintDotNETShellTemp")
if visible == 0:
sel = pdb.gimp_edit_named_paste(drawable, buffer, 1)
else:
sel = pdb.gimp_edit_named_paste(temp, buffer, 1)
pdb.gimp_buffer_delete(buffer)
pdb.gimp_edit_clear(temp)
pdb.gimp_floating_sel_anchor(sel)
#load up old selection
if hassel:
pdb.gimp_selection_load(savedsel)
image.remove_channel(savedsel)
# cleanup
os.remove(tempfilename) # delete the temporary file
gimp.delete(tempimage) # delete the temporary image
# Note the new image is dirty in Gimp and the user will be asked to save before closing.
pdb.gimp_image_undo_group_end(image)
gimp.displays_flush()
register(
"python_fu_paintdotnetshell",
"Call PaintDotNET",
"Call PaintDotNET",
"Rob Antonishen",
"Copyright 2011 Rob Antonishen",
"2011",
"<Image>/Filters/Call/PaintDotNET...",
"RGB*, GRAY*",
[ (PF_RADIO, "visible", "Layer:", 1, (("new from visible", 1),("current layer",0)))
],
[],
plugin_main,
)
main()
Open the code in your text editor - save it as Paint.NETShell.py - place it in your Plug-ins folder in the Gimp program directory or your user docs folder "Plug-ins"
You will find the filter in Filters/Call/Paint Dot Net
Simply open an image in Gimp or create one
Go to Filters/Call/Paint Dot Net
Run the filter
You have a few options to choose in the pop up dialog - edit layer or new from layer
Gimp will then open Paint dot Net and export the file to it
Run your filters - click to close Paint dot Net - you will be asked to save the temp image - select yes
Gimp will close paint dot net, and export the file back into Gimp as the top layer or edited layer.
Enjoy
If you need further explanation of the filter or editing of the script PM me.
A small image to show results of the Gimp Python plug-in
http://img684.imageshack.us/img684/9468/paintdotnetliquify.png