LazPaint

From Lazarus wiki
Revision as of 14:06, 11 January 2021 by Circular (talk | contribs) (border radius 5)
LazPaint

Free cross-platform image editor with raster and vector layers, written in Lazarus (Free Pascal).

Blog Last changes Documentation Download Screenshots Forum f


History

LazPaint was started to demonstrate the capabilities of the graphic library BGRABitmap. It provides advanced drawing functions in Lazarus development environment. Both provided a source of inspiration for the other and finally LazPaint became real image editor. Thanks to the help of Lazarus community, the program has been compiled on Windows, Linux and macOS.

 

Features

Files: read and write a variety of file formats, including layered bitmaps and 3D files.

Tools: many tools are available to draw on the layers.

Edit/Select: select parts of an image with antialiasing and modify the selection as a mask.

View: color window, layer stack window and toolbox window.

Command line: call LazPaint from a console.

Scripts: scripts are provided to do layer effects. You can as well write your own Python scripts.

Quick start

Useful keys

  • Maintaining Space key down switches temporarily in move mode
  • F6 key hides/shows all tool windows
  • Ctrl key aligns to image pixels and limits possible angles with rotation tool
  • Backspace key erases last point in a polygon or last letter in a text
  • Enter key releases the selection

Right mouse button can be used to:

  • Swap drawing colors temporarily
  • Subtract from selection (selection tool)
  • Define light position (shaded text, shaded shapes)
  • Finish a shape (polygon, curve)
  • Rotate a shape (clicking corners)
 

Video tutorials

Video tutorials are available on Youtube :

Download

Binaries can be downloaded on GitHub for Windows, Linux and macOS.


Download Portable

Support this project

How to make a portable version

 

Source code

The source code can be downloaded on GitHub:

LazPaint: https://github.com/bgrabitmap/lazpaint/

BGRAControls: https://github.com/bgrabitmap/bgracontrols/

BGRABitmap: https://github.com/bgrabitmap/bgrabitmap/

Dependencies:

  1. LazPaint depends on BGRAControls and BGRABitmap.
  2. BGRAControls depends on BGRABitmap.

You can download the source code and compile it for a specific platform. MacOS version is now fully functional.

Compilation of latest version

  1. Download Lazarus at https://sourceforge.net/projects/lazarus/files/
  2. Open Lazarus to check it works
  3. Download latest version of BGRABitmap at https://github.com/bgrabitmap/bgrabitmap/releases
  4. Open the package file BGRABitmapPack.lpk in Lazarus
  5. Download latest version of BGRAControls at https://github.com/bgrabitmap/bgracontrols/releases
  6. Open the package file bgracontrols.lpk in Lazarus
  7. Download LazPaint at https://github.com/bgrabitmap/lazpaint/releases
  8. Open the package file lazpaintcontrols.lpk in Lazarus
  9. Open the project file lazpaint.lpi or lazpaint.lpr in Lazarus (choose to Open project if prompted)
  10. Click the green triangle "Run" and check if the program is working
  11. Close LazPaint and close Lazarus and go in the release folder of the project

The essential files are: the executable file, the readme file, the models, i18n and scripts folders.

Additional files and instructions are in release folder for each platform:

  • windows: run the batch file stage.bat to generate a lazpaint32 and lazpaint64 folders that contains everything (it adds particular support for WebP and RAW images by adding dcraw.exe and libwebp.dll).
  • macOS: go in the folder with the terminal and call ./makedmg.sh to generate the bundle.
  • debian: go in the folder with the terminal and call ./makedeb.sh to generate the DEB package and the TAR.GZ file.

Note: when debugging on Windows, you may want to have support for WebP and RAW images. You can do that by copying the dcraw.exe and libwebp.dll files next to the compiled files (for example debug\i386-win32 for 32-bit version).

Screenshots

LazPaint on Linux (and dark theme)

Lazpaint version 7.png

LazPaint on Windows

Lazpaint curve redim.png

LazPaint on Puppy Linux

lazpaint6 puppy.png

Interface

Many common actions can be done with the toolbar. Zoom can be changed with the magnifying glass (+ or -), or by clicking on the 1:1 button to show the image at its original size in pixels, or with the zoom fit button to set the zoom so that the whole image be within the window.

It is possible to undo/redo the 200 last operations. If you have a doubt on what you are drawing, undo back to the beginning, save a copy, and redo the modifications before going further.

Image manipulation

An image can be resampled, flipped horizontally and vertically.

Smart zoom x3 : resize the image x3 and detects borders; this provides a useful zoom with ancient games sprites.

Color manipulation

  • Colorize : set the color of an image while preserving intensities
  • Shift colors : cycle colors and change colorness (saturation)
  • Intensity : make colors lighter or darker without making them white
  • Lightness : make colors lighter or darker by making them whiter
  • Normalize : use the whole range of each color channel and alpha channel
  • Negative : invert colors (with gamma correction)
  • Linear negative : invert colors (without gamma correction)
  • Grayscale : converts colors to grayscale with gamma correction

Filters

Filters can be applied to the whole image or to the active selection.

  • Radial blur : non directional blur
  • Motion blur : directional blur
  • Custom blur : blur according to a mask
  • Sharpen : makes contours more accute, complementary to Smooth
  • Smooth : softens whole image, complementary to Sharpen
  • Median : computes the median of colors around each pixel, which softens corners
  • Contour : draws contours on a white background (like a pencil drawing)
  • Emboss : draws contours with shadow
  • Sphere : spherical projection
  • Cylinder : cylinder projection
  • Clouds : add clouds of the current pen color