Archive | Programming RSS for this section

Using Reference Images

Referring to reference images when sketching and painting can make a world of difference. If you’re like me, your mind isn’t photographic. You spend a reasonable amount of time looking at a baboon and think you have a pretty good idea what it looks like. However, once a little time has passed, your memory of it becomes more of a caricature than an accurate representation. In fact, even as you stared dreamily into the baboon’s limpid gaze you probably only really noticed features that your mind found interesting.

This can work to your advantage, helping you to capture the essence of baboon rather than a baboon-shaped husk devoid of baboon attitude. However, to go off on a different tangent, mediæval art and architecture are littered with examples of strange looking lions. Like a big dog with a curly mane, they are clearly the work of someone who hasn’t actually seen a lion. Working with a description and whatever four-legged carnivores they could find, they can be excused any discrepancies between their image and a real lion. However, in this day and age, with an internet full of images (many of them not of cats) at our fingertips, we have no excuse for drawing from memory that which we have no memory of.

Anyway, the gist of all this waffle is I decided to make more of an effort to seek out reference images before beginning a sketch, or rather I decided to make it a lot less effort for me to collect reference material and display it on the monitor screen I’m not using for painting. To this end, I have written a small program which fetches images, either from a folder on the computer, or by searching the internet with Google Image Search. It then allows you to arrange as many images as you like within the viewport, rotating, scaling, moving and cropping them to get as much reference material as possible visible at once.

RefImage

Imaginative name, eh? I decided that getting on with writing it was more important than thinking up a clever name, and now I can’t be bothered to change it (I haven’t thought of a better name yet anyway).

Screenshot showing RefImage in use (with "Oxygen" Qt widget style; It should match your native widgets and colour scheme).

Screenshot showing RefImage in use (with “Oxygen” Qt widget style; It should match your native widgets and colour scheme).

This screenshot shows RefImage in use. Search results are shown as thumbnails in the carousel at the bottom. Clicking a thumbnail loads/downloads the image in the main viewport. These images have then been scaled and cropped to show only the subject we’re interested in. (Composition is of course very important in a photo, unless it’s being used as a reference image, in which case the subject’s surroundings are just extra junk that takes up screen space and gets in the way.) While this image shows the toolbar and thumbnails, they can be hidden once you have the images you want, in order to maximise the space available for the images themselves.

The user interface is designed to make it possible to use with a tablet instead of a mouse if desired (no double clicking required!), although I usually have the tablet mapped just to the monitor I’m painting on, and run RefImage on the other monitor.

Another screenshot. Less practical, but shows a few more features, including the fact you can basically chuck images wherever you like. You can even zoom, pan and rotate the entire viewport!

Another screenshot. Less practical, but shows a few more features, including the fact you can basically chuck images wherever you like. You can even zoom, pan and rotate the entire viewport!

Development has been somewhat infrequent since it became more-or-less functional. If I discover issues or have ideas for new features while I’m using it, I try to note them down and then work on fixing/implementing many at one time. After all, there’s no point having a tool to save time if you then spend ages tweaking and improving it when you should be using it.

The source code is available from github. It is licensed under the GNU GPL, a copy of which is included with the source. In theory it should work on any platform with Qt. In practice, I have only tested it on Linux, so it may need some minor modifications before it will work on other platforms. Please report any bugs here.

Dependencies:

  • Qt: The master branch requires Qt5. There is a also a qt4 branch, which works with Qt 4. It has been tested with Qt version 4.8.4. However, it should work with any reasonably recent 4.x version.
  • qjson (only required for Qt4 branch.)

Building

Assuming a suitable development environment is set up, it should be quite simple to build. Instructions can be found in the file INSTALL.md.

Running

A .desktop file is included. Otherwise, run it from the command line using the command refimage. Information on how to use it can be found in the “Help” menu under “Introduction” and “Tips”.

Advertisements