For those of you who want a bigger preview and somewhat better liquify tool than IWARP - this tutorial is for you.
Note: This is for Windows users onlyIf you can get Paint Dot Net to work in any other platform than you can probably do this also.But as far as i know PDN only works with Microsoft Frame Works, so good luck with that.
This Python Module was originaly written by Rob A to call XnView for PS filters as Gimp-2.6.11 seems to have lost it's way with PSPI plug-in.That is to say many 8bf's fail in the new version of Gimp, and XnView handles all of them nicely.
The Python Module has been edited by me to call Paint Dot Net instead.
Paint Dot Net uses user submitted plug-ins and filters just like Gimp does, and its also free source.
What you will need - Download Paint Dot Net here with Microsoft Frame Work -
http://www.getpaint.net/download.htmlThe Python-Fu setup for Gimp(Note: Not needed if you use the partha builds!) -
http://www.gimpusers.com/tutorials/inst ... -6-windowsThe Python Module (The script you can find below)The setup is well worth it if you want to use all of PDN's filters in Gimp.
What the module does - This python module takes the current layer or new from layer and transfers it to Paint Dot Net, where you can use any filter on it there and it will save and import back to Gimp after editing in PDN. (more explanation on that to follow)
So here is the tutorial - edited by Maffe to make it a little easier to follow.
If you have ANY questions PM me and ill help you out.

ENJOY!
*****************************************************************
A Python file Rob A created to call XnView, that now calls Paint Dot Net instead - Because i wanted a nice Liquify tool.
1)
First off you have to have a Windows operation system.
- Windows XP - Confirmed by Owl700
- Vista - Confirmed by Maffe811
- Windows 7 - Not confirmedFor 64-bit you can use
Partha's portable versions of 2.7, but it is available in both 32-bit and 64-bit!
The Partha versions also comes with python built in, so you dont' have to worry about the next step.
And you need Python installed, if you haven't
read this!
2)
You have to have Paint . Net installed as well as Microsoft.net framework.
The paint dot net comes with that installer already so no need to hunt it down.
3)
Then you have to go to paint dot nets plug-in area and grab the Liquify filter or you can download
this zip.It has a lot of other cool filters included with liquify
4)
Install it in Paint dot net. use the auto filter installer here
http://forums.getpaint.net/index.php?ap ... ch_id=3910Or just unzip the package of filters to the effects folder in the paint dot net directory under Program Files.
(C:\Program Files\Paint.NET\Effects)
5)
Then grab this file
Paint.NETShell.py by righ clicking and "save link as..." Make sure its saved as a .py file
The code lays in a spoiler below if the link goes bad.
In that case:
- Open a text editor
- Paste the code
- Save as Paint.NETShell.py
- Place it in your Plug-ins folder (C:\Users\
*Your username*\.gimp-2.6\plug-ins)
In Gimp you will find the plugin under Filters/Call/PaintDotNet
How to use itRestart Gimp
Create or open an image you want to liquify
Run the script Filters/Call/Paint Dot Net
Paint dot net will open with your temp image loaded
Run the liquify tool/filter under effects/tools
Click the close button on Paint Dot net
The filter script will ask you if you want to save the changes to the temp Gimp file choose yes.
The script will then close paint dot net, export the new image layer back to Gimp and place it as a new layer on top.

Code in here incase link goes down:
- Code: Select all
#!/usr/bin/env python
'''
Paint.NETShell.py
Call Paint.Net to allow use of Paint.Nets filters. Windows Only.
Author:
Rob Antonishen
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 http://www.mm-log.com/lab-curves-gimp
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
http://www.gnu.org/copyleft/gpl.html
'''
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()
I know it seems like a lot to go through just for Liquify, but you will also get all the other PDN effects with it.
