Creating Halftone Pictures With A CNC Machine


[Metalfusion], built himself a nice looking CNC machine and has been experimenting with some out of the box uses for his new tool. One novel use he is particularly fond of is creating pictures with his machine (Google Translation). While you might imagine that he is simply using the CNC as an engraver, literally drawing images on the surface of his workpiece, what he is doing is far more interesting.

He developed a small application that takes an image (jpeg, gif, or png) and converts it to a set of pixels, which can then be tweaked and skewed to his liking. The application exports the halftone image to a DXF file which can be fed into the CAD application that he uses to control his CNC machine. The CNC does the rest, using a v-shaped router bit to cut holes into his workpiece, generating a physical halftone picture from his digital image.

Thought the process does take some time to complete, the resulting images are well worth it. If you are interested in trying this at home using your own CNC machine, the DXF Halftone application is available on his site for free.

Continue reading to see his halftone generating CNC in action.

[via HackedGadgets]


56 thoughts on “Creating Halftone Pictures With A CNC Machine

  1. Damn it. This is awesome.

    I’ve been trying to do this manually (and in colour) for ages, but it’s really hard. Small mis-alignments really do spoil the effect.

  2. @Whatnot – Well duh! Of course it does, it’s right above the .STL option and below the “create injection molding” option. Even MS Paint has it!

    On a more serious note, this is an awesome project. I can’t wait till I get my small router up and running and I can give this a shot. His program is a bit short on documentation but there is enough to figure out what you are doing with only a little deductive reasoning. I just wish I could increase the maximum work-space a bit more. All in all though, it’s a good project.

  3. For those who are interested in the program, there is now a much improved version (1.5) available on my site.

    It’s true that there are a million and one halftone filters that create very nice results and have lots of options. However, nearly all of those can only output as bitmap, which is useless for this purpose. That’s why I wrote this small piece of software.

    Direct url to download:

    1. This is an awesome program. I have the output of it but how do I tell my CNC the depth to cut at if I use a v-bit? I want to vary the bit depth instead of the circle size.

    2. Thank you for this cool program! I see on your videos that you use Mach3 to pilot the cnc, but I wonder:
      -What program do you use to convert the dxf file to the drilling G-code? (converting cicles to drilling depth)

      Nice cnc by the way !!!

  4. Looks great. And it can be recreated using a drill-press, patience and nerves (maybe using toner transfer to copy the template with circle positions and diameters to the surface, so you don’t even need to measure your drills position…)

  5. Really nice effect that. I would definitely like to get a photo done that way.

    I wonder if he thought about using grid patterns other than a straight raster, like a Fermat’s spiral for example.

    Also, I wonder if colors could be achieved by having it drill into a laminate of primary colored sheets maybe.

  6. @Dmill
    So far, you’ve added nothing worth-while to the conversation.

    If you’ve been doing this for 10 years, how about some words of wisdom for the less experienced, lessons learned, etc? There’s nothing wrong with having experience, but don’t belittle others for their lack of it.

    Step it up, share some knowledge and loose the negativity, please.

  7. Sorry, guys. I guess I should have put something up before I commented.

    I was only commenting on making photos with a CNC. The build he has here is cool, no doubt of that! Nice job!

    I use PSP to dither a photo. A simple program I wrote a LONG time ago converts the dots to G code. I then cut it using a 60 degree V bit. My CNC is a home made gantry, with a 30″ by 19″ bed. I’ll try to get something together and get it on the web where you can see it. I’m in the process of upgrading the motors, so it’s kinda tore apart at the moment. Not a high priority, because I managed to snag a 40 watt laser two months ago and I’m having a blast burning things. :)

    The main use, as it turns out, for the CNC photos is putting pet photos on Corian for grave markers. Pet owners love them.

    BTW: the way to get simple color is tape off the surface, cut, then spray paint with the first color. When it’s dry, tear that tape off and retape the entire surface, and engrave for the next color, and repeat. I find the best tape to use is the transfer tape vinyl sign makers use. Helps prevent bleed through better than anything else I’ve tried.

    Again, Sorry if I came off too negative. After all the work he put into this build, he certainly deserved better.

    1. Thank you for elaborating on your setup, along with some interesting ideas for using such processes. I echo the comments of others in that we would love to see your setup if you ever get the time. I love all things CNC and it’s neat to see how every person implements their own system differently.

  8. @Dmill
    Thanks a lot for sharing, it’s really nice to hear about what works well for other people.

    Do you also rout the outside of the Corian on the mill? I’ve seen a few techniques for this, ranging from routing by hand, vacuum table with a sacrificial MDF layer, and “onion skin” which routes down to a few mils and requires a belt sander to remove the “skin”. . .I’m always interested to hear what people are doing – although my small amount of CNC experience has been limited to PCB’s.

    Thinking about colorization – it might also be possible to use a few layers of acrylic, bonded together, and use an end-mill to hit the desired color (depth based). This would give both the 3-d depth and maybe some interesting effects for more of a retro style – it certainly wouldn’t be for everyone. I guess it winds up being similar to the way screen printing is accomplished.

  9. @Dmill Thanks for understanding our reaction, and the acknowledgment the efforts the guy put into it.
    And seriously, you might have the complete same setup for years but that has no meaning to us of course without seeing it and having access to the script you mentioned, for us we only have this guy’s info and utility to build upon.
    And as my sarcastic post hinted, a paint program might make halftone dots (most all do actually) but that’s useless to most CNC’s without something to convert it to something a CNC can understand, so to have someone hand over an app -that’s easy and financially doable for amateurs- is rather significant.
    And DXF’s are also usable for other purposes and projects of course,

    That pet owner thing is an interesting tidbit btw, I would not have thought of that one.
    And the coloring idea is also a nice, that’s stuff people can use, thanks :)

    1. @Dmill, Just clarifying the comment situation.
      your first comment brought absolutely nothing to the table. It came across as a post simply to prove your superiority while putting other people down. We don’t need that.

      Your second response however was fantastic! That’s what we need! You went above and beyond sharing your knowledge and experience. You made this article better with that response. Good job. Please keep that up.

  10. To echo a bit of what Caleb said, it’s nice to see that Dmill turned around his initial statements and brought a lot of useful details to the table.

    Additionally, the reactions of the other individuals commenting in this thread is the exact type of self-regulation we were hoping to see among our readers. It makes for a positive discussion, and no one had to resort to name calling or overt ass-kissing in order to move things along.

    That said, if you ever get your rig back up and running Dmill, drop us a line. We’re definitely interested in seeing other takes on the process, and the coloring method sounds like something others would be interested in as well.

  11. Interesting to see how others do it!

    If you google “ligiography” you’ll find a company out of deerfield beach, fl that has been doing this for sometime now. They use different hole size and depth to get better picture resolution onto metal!

    Nice homemade CNC machine btw!

  12. @Philly The material is just ordinary 9 mm plywood I stained black before cutting. Because of it’s varying thickness it isn’t really the best choice, but gives better contrast than MDF.

  13. I said I’m sorry. (pouty face) Proves I shouldn’t be posting when I’m too tired. :)
    This IS a good build! And in the interest of proving 1: I’m not a total jerk, 2: I don’t fib, and 3: Return this thread back to it’s rightful owner, I snapped a few photos and posted them here:

    I’ll even go so far as to offer to do a write up on coloring the output if you’d like. It works for lasered stuff as well as cnc output.

    I’d love to talk about it further, but this is not the place, in this man’s thread. So, with that, I’ll return you to your regularly scheduled build. Enjoy!

  14. I wonder what kind of effect you would get by making some custom laminated material to then cut. Like a kind of homemade plywood with each layer dyed or stained different colors. Mind it would probably mess up the halftone effect though.

  15. Dmill also shows how you can misjudge a person I guess, and how it’s tricky to jump into the offensive.

    Weird, this input box cuts off the right part of the text, even when I zoom in or out, I wonder if that’s something on my side, I have so many addons and protection against scripts and stuff, and use the older FF3.6.

    I see hackaday now points out the formatting you can use though, so that is good.

  16. Saw something similar in the mid-80’s at a gift shop in Laguna Beach,CA. Had a picture of my 2 yr old daughter done for my mom. Cost $20. They were using a 2 layer plastic stock used to engrave office nameplates. It was not a CNC but a custom built unit running with an S-100 bus computer and DR-DOS I think.

  17. This might be the core of a business. Most folks don’t have the means to create an image like this, and I could easily these hanging on someone’s wall. You could charge $50 or so (if that’s enough to cover costs + a profit), and folks could send in family photos, and you could mill them for them and ship them out.

    I’d buy one, anyway.

  18. Huh. That was easier than I thought, once I refreshed my memory of Imagemagick usage. This one command (along with a HT-TILE.GIF file that consists of a 15×15 black square with 1 white pixel in the middle) will produce what should do the trick:

    imconvert IMAGE.JPG -threshold 100% +matte IMAGE.JPG -equalize -colorspace gray -scale 6.666666666667% -scale 1500% -alpha off HT-TILE.GIF -composite HT-IMAGE.GIF

    ‎(I renamed ‘convert.exe’ to ‘imconvert.exe’ because Windows already has a command with that name.)

    I’m assuming that black (#000000) means ‘don’t route here’, while white (#FFFFFF) means ‘route to maximum depth’. If not, let me know; it’s easy to change the command. It’s fast, too; a 5MP image took about 3 seconds.

    1. Doh! I forgot the commands for the mask:

      imconvert -size 30x30 xc:black -fill white -draw "color 7,7 point color 22,22 point" TILE.GIF

      composite -tile TILE.GIF -size 2592x1944 xc:none HT-TILE.GIF
      (Change the size to match your image size.)

  19. Inspired by this project, I decided to write an application for doing the same thing, but it produces g-code instead of DXF files. Also, because I don’t have Blitzmax, it’s written in C++ and uses Nokia’s Qt framework. You can check it out at The code is GPL and it works under Windows and linux (I don’t have a Mac, but it *should* work); I also have a Windows binary installer available for those Windows users who don’t want to build from source. Cheers!

  20. I’ve done one as well – Just the executable, PC only. The preview is real-time, the program is free, and it will output to DXF or directly to GCode. Check out

    With mine you specify the size of the work area, maximum dot size you want, dot spacing you want (they can overlap if you like), white on black or black on white, and you can set feed rate and retract information if outputting GCode. It’ll also do halftone “lines”, as in this image:

  21. Has anybody tried version 2.1 of this program? …

    I am very intrigued by the new “path width” options. However, when I create dxf’s using the path width the dxf’s will not open and I get the following message: “invalid or incomplete dxf – drawing discarded” I can generate and view dxf with dot patterns without any trouble.

    If anybody has any suggestions I would appreciate it.

    I love the program.


    1. My guess is that his doesn’t export the paths mode properly (mine doesn’t either). Exporting dots to a DXF is very simple, however doing the paths requires a good deal of effort, and getting it right involves some tricky math. I’m in the process of updating mine to handle it. I’ve also made changes to mine to save your settings, and work properly in mm or inches.

      I hope to have the path export to DXF done within a week.

      1. Hi Jason
        Great Respect for your reactor images and great skill in sripting,cnc….
        I have one image to ask you about…how they did it??.( 100% shure you would know) but don’t know where to upload…no contact on
        Regards from Croatia

  22. Dear Sir,
    What you are doing is brilliant. I would like to learn some from you.
    I actually do halftone sandblasting but there is nothing compared with cnc engraving in terms of accuracy and time taken. I am thinking of buying a crafter’s CNC that can engrave on glass. If you have any idea if your program can work on a CNC like this, please let me know. I am so impressed by what you are doing and please educate me more on how I can move on to using CNC engraving halftone. I can imagine the good results I can get…….I love halftone sandblasting and thank you a million times for introducing me into halftone CNC engraving.

  23. Nice and another good example of how old knowledge and techniques can have a second life. If you have access to graphics software you could try something I used years ago to create some signage. I processed the image in PhotoShop (halftone filter or saved as dithered BMP) then opened in Illustrator* and used the Live Trace option to convert to vector (Flash has a similar function). Then I had to open the vector file in Corel Draw to export as a DXF.
    (*actually I used Adobe Streamline to vectorize back in the day)

  24. I absolutely looove this halftone app and my pictures came out fantastic when viewed on my iphone but when I went to Sam’s Club to print them out , the pictures are either missing the top or the sides depending on whether the picture is horizontal or vertical. So very dissapointing. I wish there was a fix for this as the pictures are great just hacked off.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.