Create a new empty action list. The logo will appear.


Open a previously saved action list.


Save changes to the current action list.

Save As

Save the current action list with a specified name.


As droplet…

Creates a desktop droplet. It sits on your desktop and you can drag and drop any amount of image files and folders on it to batch process them.


Quit Phatch.


Recently opened files



If you add an action you will only see the most commonly used features. You can add an action by pressing the 'Add' button or by double clicking an action.


There are many more actions available which you can access by pressing the top-right button 'Select'. This will open a list of categories. 'All' will show you all actions and for example if we select 'colours' :


If you choose 'all', you will get all the actions. In this case you can filter the actions by typing some characters in the search box at the top left. For example to see all actions related to gray, you select 'all' top-right and type 'gray' top-left:



Remove an action.


Enable an action. When an action is enabled it shows the logo of the action.



Disable an action. When an action is disabled it shows an X mark.



Move the action up.


Move the action down.



Shows a droplet which is always on top of the other windows in the form of the Phatch logo. Any number of files or folders can be dragged and dropped on the droplet.


Show Description

Shows or hides a text field above the action list where you can enter a description.


Expand All

Expand all actions. This has no influence on the execution of the action list. The only purpose of expanding or collapsing actions is to have a better overview.

Collapse All

Collapse all actions.



Shows the dialog for executing the action list. The execute dialog box can also be started by dragging and dropping photos on the droplet or action list.

Browse Folder/Files

Browse for folders or files depending on which source is selected.


Choose if you want to select a folder or only certain file(s) from a folder.


You can select any of the given types. The default types are the ones that Phatch can read or write. Other types are read-only. If you choose read-only types, you need to specify the type explicitly in the save option. ("<type>" is in that case not valid.) The best is to choose the default types, which you can restore by pressing the "Default Types" button. For information about all the supported file types, see the features page.

Stop for errors

If this is set, there will be a dialog showing up when error occurs which let you skip the problematic image or abort the process.

Check images first (recommended)

If this is set, Phatch will first check quickly if there are not any images that it can not handle. In most of the cases such images are invalid and it is better to exclude them from the process.

Overwrite existing images

If this is set Phatch will overwrite any existing images without any warning. The best is to leave this on. However if you are batching a huge amount of pictures and you want to pause Phatch, you can cancel Phatch and restart it later. In that case turn off this option, so that Phatch resumes with the images it didn't process yet.

Create missing folders (recommended)

If this is set and Phatch needs to save an image in a not existing folder, it will create the folder automatically.

Include all subfolders

If this is set, Phatch will include recursively all subfolders.

Image Inspector

With the image inspector you can explore exif and iptc tags of an image. There is a seperate page with more information.


Show Log

In case any error occurred, you can open the log window with this command. In case you think this is related to a bug of Phatch, copy and paste the contents on the bug report on launchpad.

Python Shell

If you are familiar with python, you will be happy to discover that Phatch was written in python. In order to let you explore Phatch in a pythonic way a python shell is provided. It offers autocompletion and introspection into its python variables and source code. This is Open Source live! Phatch is always looking for contributors. If you are interested, contact me.

When you use the Python shell, the Phatch application gets locked. You need to type 'unlock' in the Python shell to be able to use the Phatch application again.



Translate Phatch

Translate Phatch in your own language.

Write an Action Plugin

Show a quick python template to get you started.

# -*- coding: UTF-8 -*-
# Phatch recommends SPE ( for editing python files.
# Always import this (other imports in method Action.init):
from core import models
from core.translation import _t
# Declare constants here (remove this line, for demonstration only)
CHOICES         = [_t('Sorry'),_t('Image')]
#Use any PIL function you need
def foo(image,dpi,horizontal):
    #process image with pil
    return image
class Action(models.Action):
    label       = _t('Label')
    author      = 'Author'
    email       = ''
    version     = '0.1'
    tags        = [_t('tag')]
    __doc__     = _t('Description')
    def __init__(self):
        fields = models.Fields()
        fields[_t('Boolean')]   = models.BooleanField(True)
        fields[_t('String')]    = models.CharField('hello world')
        fields[_t('Choice')]    = models.ChoiceField(CHOICES[0], CHOICES)
        fields[_t('Colour')]    = models.ColourField('#FFFFFF')
        fields[_t('Resolution')]= models.DpiField('<dpi>')
        fields[_t('File')]      = models.FileField('/home/images/logo.jpg')
        fields[_t('Filename')]  = models.FileNameField('<filename>')
        fields[_t('In')]        = models.FilePathField('<folder>') #folder
        fields[_t('Float')]     = models.FloatField(3.14)
        fields[_t('As')]        = models.ImageTypeField('<type>')#png, jpg
        fields[_t('As')]        = models.ImageReadTypeField('<type>')#png, jpg
        fields[_t('As')]        = models.ImageWriteTypeField('<type>')#png, jpg
        fields[_t('Mode')]      = models.ImageModeField('<mode>')#png, jpg
        fields[_t('Resample')]  = models.ImageResampleField(_t('bicubic'))
        fields[_t('Integer')]   = models.IntegerField(-4)
        fields[_t('Integer+')]  = models.PositiveIntegerField(0)
        fields[_t('Integer+0')] = models.PositiveNoneZeroIntegerField(0)
        fields[_t('Horizontal')]= models.PixelField('5%') #accepts %,cm, inch
        fields[_t('Slider')]    = models.SliderField(60,1,100)
    def import_modules(self):
        global Image
        import Image
    def apply(self,photo,setting,cache):
        #get info (always get this)
        info                    = photo.get_info()
        #in case you use PixelField you can get width, height & dpi ...
        #... from photo (use new_*)
        width, height   = info['new_size']
        dpi             = info['new_dpi']
        #... or from user input (see actions/
        dpi             = self.get_field_value('Resolution',info)
        horizontal      = self.get_field_size('Horizontal Offset',info,
        #collect parameters
        parameters  = {
            'dpi'           : dpi,
            'horizontal'    : horizontal,
        #manipulate layer (always return)
        return self.apply_to_current_layer_image(photo,foo,**parameters) 
    icon = 'ART_TIP'


Show Credits and License. In case you contributed to Phatch (e.g. translations) and your name is not there, please let me know and you will be added to the list.

Action List

Drag and Drop

You can rearrange the order of actions by dragging and dropping them. You can drag and drop an amount of files or folders to batch process them, just like with the droplet.


You can toggle an action by double clicking its label.

Context Menu

By right clicking you can open the context menu, which is basically the same as the Edit menu.

© 2007-2008
(It is not allowed to copy, distribute or transmit any part of the wiki without written permission.
Only contribute to this wiki if you agree with this term.)