Laser engraving color photos on metal

2026-09-10 11:34 Reading time: 6 minutes

If you have a MOPA fiber laser you can engrave color photos and raster images on metals such as steel and titanium. It works best on titanium since the oxide layers formed by the laser on steel tend to rust, while titanium oxides are stable and do not corrode when exposed to oxygen or water. Other metals such as zirconium, molybdenum or any other that has colorful oxides might work too, but they're too uncommon and expensive. 

Engraving vector images (colorful ones too) is easy, since all of the laser engraving software tends to be vector based. I use LightBurn for engraving and while it has a raster image printing mode there is no function to split images based on individual color channels so I wrote a simple Python script for that, you can find it on github here

Here is a sample of engravings on 10x10cm TC4/GR5 grade titanium plates processed with the script and engraved using LightBurn with a JPT M7 60w MOPA fiber laser and a F290 lens:

A plate such as these takes 50 minutes to 1 and a half hour to engrave. You can find many more examples of engravings in my gallery.

The process is not too complex, first you quantize the colors of an image to a limited number of colors or use a specific palette to remap the colors, this can be done while dithering or halftoning, which is essential for photos as only quantization results in badly looking images. Though dithering is optional, for example you don’t need to do it for pixel art. After quantization and dithering you split the image into b&w images of each color using the Python script and then engrave all of them. For quantization and dithering or halftoning you can use your favorite image editing software or some specific tool such as Ditherista.

The Python script requires 3.x Python, the PIL and webcolors Python modules to be installed. It is not hard to use and has some additional simple functionality besides the color splitting, such as upscaling, outputting the color palette, simple quantization using the PIL module and more for convenience. Here’s how you use it for an image named dith.png that you’d engrave using 635 DPI (0.04mm line width):

PS C:\colors> .\colors.py --dpi 635 --scale 2 dith.png
Image size is 1200x1200. Image mode is RGBA, number of colors is 8.
Image size after rescaling 2x is 2400x2400.
Processing #000000 (black) color.
Processing #4B52DD (royalblue) color.
Processing #D26F1D (chocolate) color.
Processing #DDCD3E (goldenrod) color.
Processing #87BAB2 (darkseagreen) color.
Processing #84227C (purple) color.
Processing #F2F2F2 (whitesmoke) color.
Processing #992736 (brown) color.
Physical print size for 635 DPI/PPI (line interval 0.04mm):
width: 96.00mm
height: 96.00mm

It will write separate images for each color into the same folder it is run from. Add them to a LightBurn project, set the correct physical size for each image as specified by the script, turn on pass-through mode for each of them and set the frequency/speed/power/pulse width parameters for each image for specific color.

I have to note it is not easy to find a decent color palette using just one line interval that looks good on pixel size scales, but it is possible. I’ve been working mostly with 0.04mm line interval (635 DPI), on titanium for 0.04mm low speeds (40mm/s - 200mm/s) and low power seems to work best. If you have worked with color engraving on steel or titanium you probably know you will need to do a lot of material tests to discover the colors. Calibrating the timing settings (TCON, TCOFF) helps a bit but is not essential, just stick to the same settings you do the material tests.

You can download these two sample projects if you want to see how a projects look like, but you will definitely need to modify the settings for each image to get similar colors, unless you have an identical setup.

cat_flower1_col9_0.04mm_v1.1.lbrn2

flowers1_13c_0.04mm_v1.0.lbrn2


About

2024-07-04 19:15 Reading time: ~1 minute

Welcome to my personal website! I'm Povilas, born and currently living in Lithuania. 

I've spent 15 years working in cybersecurity, I'm currently enjoying being unemployed, working on my hobbies such as laser engraving, you can see some of my works in the gallery. These engravings do not have any paint applied, the colors are thin oxide layers formed with precise pulses of a fiber laser.

I like photography and collecting vintage digicams, you can find some of my photos in the gallery

I also enjoy reading, playing with ML, electronics, my fiber laser, collecting incenses, perfumes and various natural scented materials.

I've created the website unfound.media where you can discover videos uploaded to YouTube with default filenames, with AI categorization for easier browsing. You can find some beautiful and weird examples of such videos on the /r/unfoundvideos subreddit.

You can contact me at povilas@nothing.lt.


About

A personal website.