IrfanPaint is an open-source plug-in that adds painting features to IrfanView; it is developed by Matteo Italia (obviously in collaboration with Irfan Skiljan) and, as IrfanView, it is freeware.

It is also free, open-source software, released under the permissive BSD license.

If you find bugs or have any suggestions, please write me (in English or Italian); another way to give feedback is to write in this thread of IrfanView Support Forum.

If you have programming skills, you can also contribute directly to the project: check out the IrfanPaint project page at Google Code.

Note: IrfanPaint works only on NT versions of Windows, i.e. Windows NT 4, 2000, XP, 2003 Server, Vista, 7 and (I hope) later.

Getting started

The best way to obtain IrfanPaint is to download and install IrfanView, that bundles it. Then, if you want to try newer versions, go to the download section and check if there are updates and install them.

If you have any problem check the manual page or contact me.

Last news

IrfanPaint released

This release fixes a bug in the previous one which made selections not working correctly with the current IV version.

It also includes some hacks to make IrfanPaint work better with the new IV selections handling.

Note: it's strongly advised to update from .67 and .69 to this release, since the former includes a serious memory leak bug, and the latter makes working with selections almost impossible.

Continue Reading…

Posted by Matteo Italia on Fri, 30 Jul 2010
tags: release, stablerelease, releasenotes.

IrfanPaint released

Note (30/07/2010): this release contains a bug that make working with selections almost impossible. It's strongly advised to install a more recent version.

This release just fixes a memory leak in the advanced eraser tool; if the Paint palette was kept open while browsing several images, the advanced eraser tool didn't deallocate the memory for the old backup DIBs; this lead to memory exhaustion, general system slowdown (on old machines) and to instability of IrfanView and IrfanPaint (thanks to Leo Breuss, Homer Seywerd and Irfan Skiljan for reporting and testing).

Why did the release number jumped from 67 to 69? Because I got it wrong, and when I noticed it I had already committed the changes in the SVN. :P

Continue Reading…

Posted by Matteo Italia on Wed, 28 Jul 2010
tags: release, stablerelease, releasenotes.

IrfanPaint going opensource

Since, as some may have noted, I'm not having anymore much time to spend working on IrfanPaint, I'm making the whole project opensource: in this way, any people with the right abilities will be able to contribute to IrfanPaint, improving it without having me to do all the work. I'm not talking only about programming: even graphic artists, UI designers, ... would be really appreciated.

I've just released the sources, but I'd like to find out if anybody there would actually be interested in contributing to IrfanPaint; for the programming work, C++ programming skills are required, along with a good knowledge of Win32 APIs (GDI and User APIs in particular).

The project isn't very big, but isn't actually small, it's about 18000 lines of code; the main development tool is Visual C++ 2003 (VC7.1), which has an almost complete support for the C++98 standard and is still widely supported by most libraries. The compiler and the tools of VC7.1 are also available free of charge, and I may convert the project to makefile so that people without VC could compile it.

IrfanPaint has very few dependencies, it uses just the Win32 APIs and some #include-only features of boost (mostly smart pointers), although in the future it may use AGG to perform drawing.

The stated objectives are to improve existing features (adding antialiasing support and unlinking from the limited GDI APIs) and add new ones (especially a minimum of vectorial capabilities), while keeping the final object size small.

Another important milestone for me would be to decouple most of the plugin from IrfanView, maybe creating a generic interface that would translate requests from the plugin (current shown area, window to DIB coordinates translations, ...) to the specific window messages used to communicate with IrfanView.

This would make simpler a port to other applications and plugins: for example, I was asked by another plugin developer if Paint could be used in a window of his plugin: this at the moment is quite difficult, but creating a sharp separation between host-plugin interface and plugin inner working would make such a port quite easy.

Pratical info

IrfanPaint is hosted on Google Code, and its project page is http://code.google.com/p/irfanpaint/.

The code is released under the BSD license, i.e. anybody can use any part of my code to do anything, as far as they add a credit to me and to the people who worked on IrfanPaint.

If anyone is interested in contributing, please contact me; I'll be glad to explain anything about how IrfanPaint code works.

Continue Reading…

Posted by Matteo Italia on Sun, 9 May 2010
tags: opensource, bsd, irfanpaint.

IrfanPaint released

The new stable release features some big changes in the code and minor bugfixes; I'm sorry that it took so much time :-P .


  • DibSection class almost rewritten;
  • message cracker macros used in almost all the code;
  • almost all "normal" pointers replaced by smart pointers;
  • different exception handling policy (the Retry and Ignore options have been removed, they proved to be dangerous);
  • new generic text mappings functions used;
  • more precise zoom value obtained from IV (float instead of int);
  • fixed the "offscreen toolbar" bug;
  • fixed the bug in the localization of the Edit measurement unit dialog;
  • ... other changes that at the moment I don't remember :-D .

By the way, the full packet of this version of IrfanPaint includes the last (at this moment) IrfanView version (4.25), and not some outdated beta version as the previous one; in the download section below the reference to IV 4.22 is to point out that it is the minimum supported IV version.

This release is intended to be a bridge between the current IrfanPaint minor version (4) to the new one (5); many changes to the main classes in the code have been made, and a major restructuring of the code is undergoing. Anyhow don't expect to see the new release very soon, at the moment I'm not actively working on it, I'm busy with other projects.

Continue Reading…

Posted by Matteo Italia on Sat, 5 Sep 2009
tags: release, stablerelease, releasenotes.

Important notice for IrfanView 4.22 and 4.23

The last IrfanView versions (4.22 and 4.23) have been released by mistake with the β0.4.12.66 version of IrfanPaint. Anyway, even if it's a beta, it has proven to be quite stable; its only known bug is that the "Edit measurement unit" is not localized correctly: the title is "stolen" from the "Measurement units" dialog, the other controls remain untranslated and the "Cancel" button is always localized in Italian (it shows "Annulla").

I'm sorry to make you wait for the next version, but I've been very busy with school, and many changes I made to IrfanPaint are in the internal structure of the plugin, so they must be tested extensively before releasing a new version. In the next version I'm planning to introduce the concept of "objects", i.e. text, lines and shapes that are editable after being put on the image.

Posted by Matteo Italia on Tue, 27 Jan 2009
tags: important, notice, IV4.22, IV4.23.