Introduction: Adding Custom Graphics to EAGLE PCB Layouts

Picture of Adding Custom Graphics to EAGLE PCB Layouts

The objective of this instructable is to show you how to add custom graphics to a PCB using EAGLE Layout Editor. You might want to add a logo or your website address to an electronics PCB that you have created. I found out that the process of adding images to a PCB was not trivial or obvious. In order to save everyone some time, I have listed out the process.

This is Hans Scharler, I am a web designer at ioBridge. I wanted to touch up a few PCBs that we were prototyping for fun. As with most people just starting out with using EAGLE PCB, I learned by following the "Beginning Embedded Electronics" tutorials over at SparkFun. One of the example projects shows you how to make an FT232RL USB-to-Serial Breakout PCB. I followed the tutorials and eventually learned my way around EAGLE to layout PCBs.

For this instructable you will need an installed copy of EAGLE and a PCB Layout that you want to add some graphics to. I am using SparkFun's FT232RL USB-to-Serial Breakout PCB (EAGLE Files) for example purposes.

Step 1: Create Graphics for Your PCB Layout

Picture of Create Graphics for Your PCB Layout

The hard part might be creating the graphics that you want to use on your PCB silkscreen. The bulk of my time trying to figure this out was trying to find the right combination of sizes and colors of the bitmap for my graphics. I searched around forums and websites trying to find some right answers. Hopefully it will be easier for you.

Most PCBs are small. The graphics will look much bigger on your computer screen than they will look on your PCB. Most PCB silkscreen is white. On your computer screen you want the artwork color to be black.

Create a large size bitmap (BMP) with a size of 2000x2000 at least. 

Add your artwork by either pasting it in or creating it new on the canvas. Make sure the color mode is set to grayscale or monotone. If you have some existing artwork, just overlay the artwork with black. That's what I did with our logo. In EAGLE we will be only importing one color.

To gauge the appropriate size, use 175 pt font on the artwork. When this gets added to the actual silkscreen the size will be around a 1/4" high. You can experiment with the size depending on how much room your logo or artwork needs to take up vs. the size allotment on your PCB. From my experience, every 175 pt high font is about 1/4" on the printed circuit board.

Remember if it looks big on your computer screen, then you are probably doing things right so far. On my attached screenshot, I am zoomed out to 33% and it still looks big.

Save the final design as a bitmap (BMP) at 8-bits at the most.

Step 2: Run Import_bmp.ulp in EAGLE PCB Layout Editor

Picture of Run Import_bmp.ulp in EAGLE PCB Layout Editor

Open up your PCB layout in EAGLE

Select File and Run... from the menu

Select import-bmp.ulp from the ULP directory of EAGLE and click Open

Step 3: Select the Bitmap to Import Into EAGLE

Picture of Select the Bitmap to Import Into EAGLE

Select the bitmap (BMP) file that you want to import and click Open

Note: EAGLE never remembers where you saved your artwork, so get used to clicking around everytime you import bitmaps

Step 4: Select Colors to Import

Picture of Select Colors to Import

At this point in the process, you need to select the colors that you want to import. You can import 16 colors, but you only want to import one color. Every color imported will go on new layers in EAGLE.

Click on No scan

Check the box over the color black and click OK

Step 5: Configure Import Options and Click OK

Picture of Configure Import Options and Click OK

There are a lot of option on the settings dialog. Here are the settings that worked consistently for me.

Format: Scaled
Unit: Mil
Scale Factor: 0.5
Start Layer: 21

Click OK to continue

Step 6: Run the Generated Import Script

Picture of Run the Generated Import Script

You are almost done!

This import-bmp.ulp that you are running has been generating a script. At this point you can run the script to import the bitmap into EAGLE.

Click run script

Be patient, older machines will take a moment to process.

Step 7: Move and Rotate Graphics

Picture of Move and Rotate Graphics

If everything worked, you will have your artwork on the silkscreen layer (tPlace - 21). Move the graphics to the appropriate spot on the PCB. If the sizing is way off you will have to go back and adjust the bitmap that you started with.

Make sure you save all of that hard work!

Whew, you're finished importing graphics into EAGLE. Easy, right? I hope this tutorial helps you through the process. Let us know how it works for you.

PS. I don't recommend actually getting the FT232RL Breakout PCB manufactured. I think later in the SparkFun tutorial, they mention there is small mistake in the design. They show how to fix it if you keep reading the tutorial.


gentry (author)2010-10-17

No matter how small I make my image, I keep getting the message:
  /Users/gentry/koko5.bmp: Too many pixels y direction
  Anzahl der Pixel in Y zu gross

My bitmap is only 160 x 120 at this point.  (I first tried with a 2000 x 2000 image).

Any idea what's going on?


stefblog (author)gentry2016-03-11

Got the same issue. I tried everything from very small to very large. I'm on a mac.

gentry (author)stefblog2016-03-11

Re-saving the bitmap file using ToyViewer (still available in the Mac App store) worked for me. I was starting (and failing) with an 8-bit BMP I had saved from, and I think I got the same results with an 8-bit BMP saved from I did finally get it to work!

mwilhelm (author)gentry2011-05-23

hi, did you find a solution to this?
i have the same problem!!

centerblack (author)mwilhelm2012-01-24

After saving a BMP file using Pixelmator on OS X, I also had this issue. I finally solved it by downloading another application 'ToyViewer' and simply re-saving the bitmap file.

gentry (author)centerblack2012-01-26

Excellent, that (ToyViewer) worked for me too. I had also tried 8-bit BMP, but that didn't seem to help.

iobridge (author)gentry2010-10-17

When you are saving the bitmap are you selecting an 8-bit BMP?

E QuayeI (author)2016-02-15

Where can I run the Ulp? It keeps telling me I can't run it in the package. Where is the command line? Does the Ulp work in eagle lite?

FourthDr (author)2015-04-30

How about an update for eagle 7.2? This method does not work on small PCB's (1 square inch or less), I can't get this to work for PCB's sent to OSHpark. Something about the resolution being too high. How would I place a small logo of my own similar to the Sparkfun flame on a small PCB and have it work? So far no method I have tried works on small PCB's.

TomekW (author)2015-03-16

Thanks, great job !!

n0th1n6 (author)2015-01-01

since you are using the "scaled" option, just calculate the scale factor so that you will always get the accurate size you needed. First, measure the available space in your pcb. Say for example you have 10mm x 10mm and your bitmap is 2000px X 2000px. Divide 10mm by 2000px, you'll get .005 scale factor.

ted99tw made it! (author)2014-11-17

Thanks for the great tutorial!!

Ugifer (author)2014-10-16

Thanks very much for this - I know it's now quite old but I found this yesterday and it worked excellently - along with the tip to use only 200dpi. I'm sending my board to iteadstudio rather than OSHpark but I wanted to be sure it would work so I used 200dpi for them too. Hopefully the resulting board will feature in an 'ible soon. I'll post a link if so.

One additional tip - you don't need to put your graphics in layer 21. Just import it into layer 200 as proposed (so you can select it and manipulate it easily but turning off other layers). Then, when you load your CAM job to produce your gerber files, add layer 200 to the layers used for the top (or bottom) silk screen.

I added a bmp to layer 200 and wanted it in the same place on the top and bottom silks, so I included it in both layers in the CAM job. It will be mirrored in the bottom layer but that didn't matter in this case.

Thanks again.


hpb (author)2013-11-24

Awesome tutorial! Thanks! :) Just a quick note - some PCB manufacturers such as the popular OSH Park use a 200 dpi printer for silkscreens. Make sure when you run the bitmap import ULP, select DPI and then enter 200. The image size is usually calculated this way - calculcate the size of the logo you'd want. Since you know the exact dimensions of the board anyway this is easy. Multiply that number by 200 (since the printing resolution is 200 dpi) and that should give you the image size in pixels.

Qtechknow (author)2013-01-21

I have a bitmap file on a Mac (used ToyViewer to create), and it is just black and white. When I use the import bitmap script, however, it gives me an odd choice of 256 colors, and it goes off of the screen. Any help???

jeeep (author)2012-12-20

Has anyone had any luck using this method then successfully uploading it to OSH Park? I have had no luck getting a bmp to turn into a silkscreen layer; their site seems to ignore the bmp (placed on correct layer).

liudr (author)2012-12-20

Thank you so much! I had some Japanese texts for silk screen and had to export into graphics and then used your tutorial to get everything in EAGLE. I can't read Japanese but everything looks the same as the source!

joerice01 (author)2012-09-16

This works great for me up until moving and rotating the graphic. It seems like when i go to move it only the individual lines are moved. Is there away to group the whole image together and then move it or is there something i'm doing wrong?


quatch (author)joerice012012-12-12

Suggestions for a easy import:
1) Import to layer 200 or so (somewhere empty).
2) use the layers button to turn off all other layers
3) use the group tool to select the whole image
4) now you can select the move tool, right click on the image and click move group
5) then you can turn on the other layers, and it will still be the active group, so you can right click to move it around.
6) select the change tool to change to tsilk or wherever you want it to end.
7) right click on the image and change:group. It'll still remember what the group is.
8) Win!

jeff-o (author)2012-07-14

Two quick tips that I learned the hard way:

1. Make absolutely sure that the image you're working with is actually black, and there is nothing in the background. Otherwise, Eagle gets confused and things don't render properly.

2. Eagle will place the logo right at the origin, and will draw it on top of the board. This makes it very hard to pick up and place where you want it! Before running the script, move your entire board up or over from the origin. Eagle will draw the logo in blank space, making it easy to group-select and move where you want.

This works well for one-offs, but I do recommend making a library of your graphics instead. This makes it much easier to move logos and stuff around just by grabbing their origin, rather than constantly group-selecting the logo (and everything beneath it!)

bigthump (author)2012-04-16

So I tried this and it worked great, but I had a lot of issues separating the logo bits out from the other layer 21 stuff (like some others have voiced).

At one point I tried putting it on layer 200 and just moving it as a group to layer 21 after I had it positioned, but that was a pain too.

So what I did is to create a library in Eagle, import the graphic into some packages (I have one each for .5, .75 and 1 scaling). Then I created a "created by..." (or blank probably works) schematic symbol and created devices for each logo size.

Now I can simply add the logo directly to the board from the library and move it around as a group from a single origin. Super easy!

Thanks for this instructable!

duncan_a (author)2011-04-09

It worked, I have a nice graphic imported and it's down in the bottom left hand corner of the PCB...

Unfortunately it is on the top of other items on layer 21, across a mounting hole and will be beneath components when the board is populated.

It absolutely refuses to be moved (or deleted)...

I'm fairly sure I followed the instructions 'to the letter' but I am new to Eagle. As I spent almost three days routing this board, I'm hoping somebody knows a simple solution to the problem.


irelandmc (author)2010-11-08

I have been trying to find some information on how to do this for weeks! Thank you for the great instructable! Worked like a charm!

rmdorsey (author)2010-10-03

Marvelous job IOBridge. I got it working the first time through!

iobridge (author)rmdorsey2010-10-03


CODIY (author)2010-08-09

Thank you for putting this instructable up. I messed with several different ways of getting logos onto boards, and usually ended up drawing them (for QR codes, anyway) in Eagle. This is much, much simpler!

profpat (author)2010-07-19

thanks, will try out this one on my newer board designs....

itburnswhenithink (author)2010-07-16

Nice tutorial. I would recommend creating a new package for the logo. That way you can add it to your PCB layout without having to repeat this process every time.

Spydamonky (author)2010-07-11

this may seen like a stupid question to you pros out there, but how do you set the outline of the board??

ansc (author)Spydamonky2010-07-11

You draw a wire of width "0" to the layer 20 (dimension) for your desired board outline. Or you move the existing outline-wires to your desired outline.

Spydamonky (author)ansc2010-07-14

Ahhhh thnx man

amando96 (author)2010-07-13

I usually just edit the pdf, but i rarely add logos

iobridge (author)amando962010-07-13

Do you make your own PCBs? If not, where do you get them made?

amando96 (author)iobridge2010-07-13

Yes, very easy to make, and unlike what it's been said, it's NOT more expensive that getting them made by batch PCB, olimex, etc. I'm setting up a tutorial soon, very detailed.

rhoaste (author)2010-07-13

The import of graphics is clumsy and unfriendly (by design) in my opinion. It's a pity Cadsoft haven't got a more flexible way to manipulate fonts and graphics. It's the one thing I think would be a considerable improvement for Eagle.

jeff-o (author)2010-07-12

Thanks for this. I figured there was an easy way to add graphics, but I didn't realize it was this easy!

E_MAN (author)2010-07-11

Cool!! I will try to add graphics to my PCB designs today. Thanks :D

About This Instructable




More by iobridge:Adding Custom Graphics to EAGLE PCB Layouts
Add instructable to: