PhotoFlow as a GIMP plug-in - now usable!

Recently I have been working on a version of my PhotoFlow RAW editor that works as a GIMP plug-in.

The plug-in works is similarly to the UFraw one: when opening a RAW image, GIMP opens the GUI interface of the plug-in and sends the RAW file to it for processing. Once the processing is finished, the result is sent back to GIMP as a newly opened image.

Compared to UFraw, the photoflow plug-in sends the image data back to GIMP in 32-bits floating-points format, so that one can fully exploit the high bit depth capabilities of GIMP 2.9. In fact, the photoflow plug-in only works with the 2.9 version of GIMP, and is at the moment of writing not yet compatible with earlier versions.

Moreover, the plug-in provides all the non-destructive editing capabilities of the standalone editor, including RGB curves, Lab-based BW conversion, selective color editing, etc…

The plug-in still has to be compiled from sources, and requires the installation of the GIMP 2.9 development packages. Pre-compiled windows and OSX versions might come in some near future, but there are still some building issues to address there.

If you feel brave enough to test it, here are the steps to follow:

  • install the required build dependencies (this list might not be complete, and is only valid for Ubuntu and derivates, and some package names might change across Ubuntu versions):
    libtiff5-dev libpng12-dev libjpeg-dev zlib1g-dev libfftw3-dev libxml2-dev libexif-dev libexiv2-dev libgexiv2-dev liborc-0.4-dev libsigc++-2.0-dev libgtkmm-2.4-dev gobject-introspection libpugixml-dev libopenexr-dev

  • install the libvips-dev package from
    The VIPS packages that ship with the Ubuntu distributions are usually too old to work with PhotoFlow

  • clone the photoflow stable branch:

    git clone
    cd PhotoFlow
    git checkout stable

  • build photoflow:

    cd build

  • copy the plug-in executable to GIMP’s plug-in folder:

    cp -a Release/share/photoflow/plug-in/pfgimp $HOME/.config/GIMP/2.9/plug-ins/

  • start GIMP and open a RAW file; photoflow should be used to process the file, as in the screenshot below:

Any kind of feedback will be greatly appreciated!

1 Like

Hello, I’ll have a look tomorrow or after tomorrow. Is your program capable of working with layers, as the screenshot suggest…?

Yes, it works with “non destructive adjustment layers”, each associated to its own opacity mask (also non-destructive) for local editing.

Here you can find few resources:

In particular, here is a general introduction tutorial:

and here examples of using opacity masks:

Hello, I tried to install your software on Xubuntu 15.10, but stops because of missing packages. I added one package a time, but continued to complain.

  • libxml++2.6-2v5
  • libxml++2.6-dev
  • libexif12
  • libexif-dev
  • libgexiv2-dev
  • liborc-0.4-dev
  • libexiv2-dev

Then she says:
> – checking for module ‘vips>=7.42.0’
> – package ‘vips>=7.42.0’ not found

Synaptic has only version 7.40.6, so here I gave up!

@paulmatth You have two options for VIPS:

  • install the libvips-dev package from

  • use the script instead of
    this other script will take care of downloading and installing VIPS locally, and then compile photoflow against the locally-installed VIPS libraries

Hope this helps!

GRRR! :crying_cat_face:

paul@graveyron:~/PhotoFlow/build$ ./
Cloning into ‘libvips’…
remote: Counting objects: 35440, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 35440 (delta 0), reused 0 (delta 0), pack-reused 35435
Receiving objects: 100% (35440/35440), 37.91 MiB | 859.00 KiB/s, done.
Resolving deltas: 100% (23369/23369), done.
Checking connectivity… done.
./ 1: ./ aclocal: not found
cp: kan status van ‘/codeset.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/gettext.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/glibc21.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/iconv.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/lcmessage.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/progtest.m4’ niet opvragen: Bestand of map bestaat niet
cp: kan status van ‘/introspection.m4’ niet opvragen: Bestand of map bestaat niet
./ 47: ./ gtkdocize: not found
./ regel 27: ./configure: Bestand of map bestaat niet
VIPS configure failed

(Bestand of map bestaat niet: File or folder does not exist).
Further ideas?
(BTW, I have a dev environment installed to compile RawTherapee for example)…

You need to install the automake and gtk-doc-tools packages in order to have aclocal and gtkdocize respectively…

Buongiorno, it’s really Una Giornata Particolare!

I installed automake and gtk-doc-tools.
Then she said: I can’t find swig.
So I installed swig and swig2.0 that came with it, built it again and…


Any ideas left?

I hope you are not out-of-patience yet :wink:

One more missing package: object-introspection

I have the impression that the Glib/GTK development packages in Ubuntu have missing dependencies when they get installed, and therefore you need to manually install few “obscure” packages in addition…

Hello, I’m sorry but I don’t know how to continu from here. My softwaremanager says that I have installed the package libglib-object-introspection-perl but your code has nothing to do with Perl I suppose.
Synaptic does not offer a package called object-introspection. I tried gir1.2-gda-5.0, but to no avail.

So I’ll wait till your software is a standard plugin in GIMP 2.9!

SORRY!!! I had a typo in my previous message, the name of the package is


I hope you’ll still give the compilation one more try…

Hello, that worked quite well, the compilation process started, BUT

Linking CXX static library liblibraw_r.a
[ 6%] Built target libraw_r
Scanning dependencies of target rawspeed
[ 6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Camera.cpp.o
In file included from /home/paul/PhotoFlow/src/external/rawspeed/RawSpeed/Camera.cpp:1:0:
/home/paul/PhotoFlow/src/external/rawspeed/RawSpeed/StdAfx.h:103:23: fatal error: pugixml.hpp: Bestand of map bestaat niet (does not exist)
compilation terminated.
src/external/rawspeed/CMakeFiles/rawspeed.dir/build.make:54: recept voor doel ‘src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Camera.cpp.o’ is mislukt
make[2]: *** [src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Camera.cpp.o] Fout 1


Tell me what I can do more (tomorrow, that is).
Regards, Paul.

Ok, I have added in the initial post a (hopefully exhaustive) list of build dependencies, something I should have done from the very beginning…

The additional missing dependency is libpugixml-dev. If you already got to the point of starting the compilation process, that should be the last missing one.

By the way, I must include pugixml among the packages that are tested by cmake…

Hello, finally I managed to compile PhotoFlow, that took 28 minutes using only one core. Some remarks.

  1. The command in your first post:

does not work because there is no directory Release/share/photoflow/plug-in, neither does the file pfgimp.

  1. There is an executable called photoflow though in the directory build/Release/bin. I can start that and see the screenshot as shown in your first post. The first two photos I opened were scrambled after using the curve tool (weird stripes and colors). A third one reacted better. When I tried to save it as a tiff, the application crashed. Hmmm…

  2. I copied the executable to $HOME/.config/GIMP/2.9/plug-ins/ and started GIMP 2.9. Where exactly can I find your plug-in? I don’t see it. I must open a raw from within GIMP? That opens only a 160x120px thumbnail. Ah, I see now that you wrote that I must double click a raw file. But that only opens the same thumbnail in GIMP…

  3. AHA, I need to install the dev packages for GIMP 2.9, that might do the trick. But that’s for developers, not for interested end users! So I stop here.

Yes! As I wrote in the initial post:

In fact, the development packages are not really for developers, they simply provide the header files and libraries needed to compile plug-ins from sources. Nothing will change in your GIMP set-up, since the development packages do not provide another executable. Here “development” does not mean “unstable” but “additional files from the same GIMP version you have already installed”.

So it is safe to install those development packages, as they are needed to generate the "pfgimp plug-in. After that, the photoflow window should open up automatically when you try to open a RAW file in GIMP, as you said.

Hello, I added libgimp2.0-dev to the mix and recompiled, but apparently this is not the right package. The description of that package is “Headers and other files for compiling plugins for GIMP”, so I thought that must be that one. Any idea which packages are missing?

Which version of GIMP have you installed? The plug-in only works with GIMP 2.9.x, installed in my case via Otto’s PPA.

If you are using gimp 2.8 and do not want to upgrade, please let me know and I’ll try to quickly add support for earlier GIMP versions, although you will loose the advantage of 32 bits floating-point precision…

If you are already using GIMP 2.9 packages, could you post the result of the cake command (or a full build log if it is easier for you…)?


Hello, yes running 2.9 here via the usual ppa (Otto’s). No idea what cake is or where I can find a full build log. I just tried to compile your plug-in and that did not work, so next time better! :wink:

Damn automated corrector!!! I meant to write cmake but it seems that my OSX system prefers cakes to build tools…

One thing we should verify is if your PhotoFlow git clone point to the stable branch and not the default master one… what do you get if you run the following command in the PhotoFlow folder:

git branch

If you do not get an asterisk in correspondence of the stable branch, then you need to switch to that first:

git checkout stable

You can then run the git branch command again to verify that the current branch has changed.

As for the build log, simply redirecting the output of the script to a file, and then sending me that output would be enough:

./ >& build.log

To save time, since you already compiled VIPS successfully, you can edit the script and set


to avoid re-building VIPS again and gain…

Hi Carmelo,
You must add : OpenEXR and vips>=7.42.0 in the needed modules in plus, please!
here in my Linux Mint Rosa 17.3, I need add it too.
Patrick D.

1 Like