JPEG Saver 5.25


It's not a bugfix release this time, I've actually done some useful stuff in this version. A lot of it is internal with no obvious changes to how JPEG Saver looks, but it does make some other useful stuff possible.

This is not a pipe

The big internal changes are something I have had planned for a couple of years, and basically move some of the processing around and into a configurable pipeline to make things work better.

Why? Well, in previous versions JPEG Saver's loading process was like this:

Load image ➔ Resize ➔ Draw

In that process “Draw” was doing a lot of the work, and it was doing it in each display's main thread. That meant JPEG Saver could be a bit unresponsive while it was loading, resizing and recolouring background images all as part of the drawing stage.

In version 5.25, the pipeline-based process is something more like this:

Load image ➔ Resize ➔ Background setup ➔ Load background image ➔ Resize ➔ Desaturate ➔ Tint ➔ Blur ➔ Vignette ➔ Draw

The loading pipeline contains all the stages from “Load image” to “Vignette”, and all the drawing stage has left to do is put things together for display on the screen. In this example there are a lot of stages included but the main image loading and resizing are the only ones that are always used, with other stages added to the pipeline based on the chosen options.

We're in the pipe, five by five

I did all this to make it possible to add some more processing for backgrounds without JPEG Saver becoming really sluggish. Thanks to that the backgrounds tab now has a new mode, “Image copy - Fit to screen”, that scales a copy of the main image up to fill the screen background. There are also two new options on the backgrounds tab, “Blur” and “Vignette”.


Blurring is quite a time-consuming process, and that is the main reason I wanted to change to the pipeline processing method before adding it. The options available for blurring are the method, which can be a simple averaging or a Gaussian blur, and the distance the blur covers. For example, a blur of 2 means each pixel is blurred with the 2 adjacent pixels in each direction, covering a 5×5 block.


Vignette is an effect like you might see on old sepia photographs, where the edges fade to the background colour. In JPEG Saver the vignette uses the “Colour 1” value for its shading, so it matches with the tinting effect of the alpha slider. The drop-down box allows you to choose the strength of the effect, with 1 being a mild bloom and 10 being a throwback to the 1850's.

Piping hot

There are a couple of unrelated changes in this version:

Geometry again

The /g option I added in version 5.24 allowed for using JPEG Saver in a window on the desktop, but soon after releasing it I realised I had missed out a more useful function. In version 5.25 you can use the /g option multiple times and JPEG Saver will open multiple windows as though they are separate displays, with the first listed being the primary display. I have no idea if this will be useful to anyone apart from me, but I'm finding it very useful for debugging.

More image info

There are three new fields available in the image info item, %T and %A for the creation and modification date/time of the folder the image is in and %a for the modification date/time of the image. The image creation date/time was already available as %t.

Pipe down

There are a few bugs fixed in this version, because of course there are:

I also tried to fix a bug with multi-monitor systems and the order the images are displayed in some modes. I'm not sure I have that one fixed yet though, so I'll be having another look at it.

Stick that in your pipe and smoke it

The new version is available from the downloads page.

« Previous: JPEG Saver 5.24.1 Next: JPEG Saver 5.25.1 »