Making a Button with GIMP
2019.01.06: General Geekery
Public domain and other open artwork is a wonderful resource, but the crux of the issue with downloading art from the Internet is that you just can’t be certain that the person who posted the art actually has the rights to distribute it. Some stuff is easy to verify, like the “Kenny” artwork, while other stuff is more nebulous and uncertain.
Anyway, I really liked the look of this one button that I found on Openclipart.com, but I couldn’t be 100% sure that it wasn’t copied from somewhere else. Given that I intended to use the graphic in RocketTux, which is GPL v3 and Creative Commons Attribution licensed, that abiguity wasn’t really good enough for my purposes. So, I fired up GIMP and made something similar.
Personally, I am not an artist, but I do an alright job of reproducing what I see using the techniques I have learned over the years. Here is a walk through of how I created this button.
1. Make a Circle
Pretty straight forward. Just open a new file of the size that you want, and make a circle selection with the “Expand from Center” option selected to maintain the aspect ratio.
2. Draw a Border and Fill the Background
Flip over to the Paths tab and click the “Selection to path” button so you can save the circle shape and use it to draw/paint lines. Without closing the selection (so you constrain the painting to the inside of the selection, giving you a hard outer edge), head over to the Blend tool and choose a linear gradient to fill the circle. Select your background and foreground colours, then drag from the bottom right to the upper left such that the lighter colour is on the upper left (left being the bright side). Next, on the Paths tab click the “Paint along path” button and paint a grey line of about 4px - that’s your hard outer edge!
3. Create the Illusion of Depth on the Ring
The first step of this illusion is to make a soft white ring that the brain perceives as lighting and the indication of a slope towards the outside. Now again, I am no artist, but this seems to be achieved by creating a fuzzy line on the outside with a harder edge on the inside. Start by making a path from the circle selection, then DESELECT the circle so that the fuzzy line will not be constrained on the outside. You’ll need to select the paintbrush tool (left) and the most fuzzy circle brush from the list on the right. Set the stoke size to 5 or 6px and the opacity to 80% or so. Then in the Path tab, use the Paint along path tool, choosing the “Stroke with a paint tool: Paintbrush” option. This will give you a nice glowing gradient. You will want finish this part of the ring by hardening up inside a bit by using Painting along the path option to paint a 3px white “stroke line” (this cuts the gradient sharply at the “top of the ridge” of the button).
4. Form the Inner Lip of the Ring
The screeshot here doesn’t show this step well, but what I did was I once again shrank the circle selection by 2px, left it selected, created a new path, and then painted along that path with the “Stroke with a paint tool: Paintbrush” option in a grey colour. It took a few tries to get the shade right. If you want to be super fancy, this ring can be a gradient that gets darker as it moves toward the center, creating a stronger illusion of depth, but it can be tricky on a small image due to the limited amount of pixels. Shrinking the selection by 1px, deselecting, and making the stroke along the path in that case requires precise tuning of the colour/shade, otherwise it just looks weird. One grey circle was good enough for me!
5. Pick the Gradient Colours
I was making this button for use on the main RocketTux page, so I pulled the shades of blue from the RocketTux logo (which I also made in GIMP many moons ago). My first choice of the light colours, as seen in this image, ended up being far too white for my liking so I went with the first shade I picked directly from the logo.
6. Create a Radial Gradient
With the selection set to the inner most circle, add a new layer with a transparent background, select the new layer, and open the Blend Tool. From the Shape dropdown in the blend too, select Radial and draw your gradient by once again dragging from the bottom right towards the upper left. The trick here is to click outside of the selected area then drag and let go just outside of the selected area on the other side, depending on the desired shade of the ending colour. This maximizes the lighting effect without making an obvious dot of light colour in the center of the gradient. Play around with it and you’ll see what I mean! Should be noted that this gradient will be 100% opaque in my case, but you could get fancy by adding textures on a layer behind it, etc. - lots you can do.
7. Get Glossy!
Man there was a time I was completely in awe of glossy icons! Then, as with many mysteries in life, I looked at them closely and realized that the gloss was just a dead simple trick. All you need to do is add a new layer, shrink the circle selection by 2 to 3px, fill the selected area with a slightly off white shade of white (with a temperature to match your subject, which in this case is cold, aka blue), and then set the opacity of the layer until it produces the desired look. There are other more complex ways to generate a slightly higher quality effect, but truly this way will suffice and it only takes a few seconds.
One of the ways you can make the gloss look more convincing is to put the eraser opacity to 4% and it’s size to much larger than area you’ll be erasing (60-80px in this case) and simply decrease the opacity of the moon tips and the inner most part of the circle. Ever so slight of an adjustment, this does help the effect “pop”, while also enhancing the object’s skeuomorphism.
8. Shape the Glossy Area
This is so easy it’s laughable. Click the circle selection tool, grab the circle selection and move it such that it leaves a half moon shape over the inner circle. Hit the delete key and just like magic you’ve created a glossy button!
9. Take a moment to enjoy it…
Seriously, revel in your mastery of GIMPography for you are awesome and worthy of praise! :)
10. Add the Letter or Icon
This is a matter of both taste and function, but in my case I wanted to make the letter (a question mark in this case) look as though it was on the screen or under the glass of the button. I could have done a better job here, but the general princple to achieve the effect is…
- Create a letter using the font tool.
- Duplicate the letter, placing the duplicated layer lower (behind) the original.
- Use the Eye in the Layers tab to hide the original tool, to prevent selecting it.
- Select the duplicate, change its colour to a slightly blue shade of white.
- Resize move the duplicate so that it’s slightly larger than the original and such that it makes a border all around the original. You’ll need to toggle the original letter on and off to help line up the larger duplicate.
- Use the Blur filter on the duplicate twice.
- Set the opacity of the duplicate’s layer (the glow layer) to a point that produces the desired effect.
As you can see in the four images above, these seven steps aren’t very difficult and each of them can be subjective. It also depends a lot your own eye sight and how far away from the monitor you’re sitting. Like in the glow comparison image, if I stand back a bit I can’t see any difference between the 71% and full the full glow version.
Hopefully this quick walk through has helped demystify some of the process of creating graphics with GIMP. Most of the techniques that I use in GIMP I learned by studying the colours and patterns in other people’s work and then playing around with the options in GIMP until I found a way to produce something similar. I can’t remember how long I have been using GIMP, definitely more than a dozen years now, but I can say that it has become easier to break down what I see in images into the processes I could go though to create something similar with GIMP. I am sure the same general sentiment applies to any art creation program.
Ps. I use GIMP 2.8, because it “just works”, where as the 2.10+ versions suffer from “change for the sake of change”, many regressive bugs, and some horrendous performance issues. I sincerely appreciate the efforts of the GIMP team, but I’ll stick with what works!