imgserv is a Java-based, network-accessible image scaling and transcoding server. It can:

  • Resize images
  • Resize very large PNGs using a constant amount of memory
  • Transcode images (e.g. convert GIFs to PNGs)
  • Rasterize SVGs
Only MediaWiki 1.13 or higher is supported

Download the latest release from

Installing the server[edit]

Extract the archive and run bin/ to start imgserv:

$ gzip -dc imgserv-server-5.tar.gz | tar xf -
$ cd imgserv-server-5
$ bin/

You can configure some parts of imgserv in a configuration file; copy imgserv.conf.example to imgserv.conf and start imgserv like this:

$ bin/ -c imgserv.conf

imgserv will automatically support transcoding and standard resizing. See below to enable pngds for constant-memory PNG resizing.

Installing the client[edit]

Download the latest client from Edit Makefile if necessary and type make to compile it. Install imgserv and imgserv-wrapper in a convenient directory (you will probably need to edit imgserv-wrapper to fix the path).

To use imgserv for SVGs, add this to your LocalSettings.php :

$wgSVGConverter = 'imgserv';
$wgSVGConverterPath = '/usr/local/bin';

And for bitmap scaling:

$wgUseImageMagick = false;
$wgCustomConvertCommand = "/usr/local/bin/imgserv-wrapper -w %w -h %h %s %d >/dev/null 2>&1";

Enabling pngds[edit]

Warning Warning: This is still very experimental. You might find it doesn't work properly, or causes imgserv to crash.

pngds is a library that allows fast resizing of very large PNG images without large memory usage. To enable pngds support in imgserv:

make JAVA=<path to Java installation> <target>

<target> should be one of these options: solaris, solaris-gcc, linux.

  • Copy to a convenient location (e.g. /usr/local/lib).
  • Add this to imgserv.conf:
Using /tmp is not secure on a multiuser server. Use a directory that only the user running imgserv can write to.

imgserv will now use pngds to resize PNGs.