How can I remove the background and replace with transparency (as represented by checkered background in PS)? And are there any limitations in the file type I can then export the image to?
Ubuntu – Apply transparent background in GIMP
gimp
Related Solutions
I think I got it working.
The procedure is that you put the background image (named "background.png", the ticket without the number, but with 2014/
) in a folder, together with the script below. Then, if you run the script (after editing the three lines in the head section):
The script produces numbers from
001
to500
(but it can be any number you define in the head section) Subsequently , usingimagemagick
:the script creates (number by number) separate layers (files) with the number in the right position
- it copies the background layer + number layers into a new file, saved in the same folder, for each number.
- the script then removes the (temporary) additional layers
Notes
You may have to install
imagemagick
:sudo apt-get install imagemagick
I used this free version of the font. It turned out that in the script, I had to set the absolute path to the font for it to work. I just copied it to
~/.fonts
and used that path. In the head section of the script, set yours.
The script:
#!/usr/bin/env python3
import subprocess
import os
curr_path = os.path.dirname(os.path.abspath(__file__))
#---
number_of_tickets = 5
bg_file = curr_path+"/"+"background.png"
font = '/home/jacob/.fonts/dirt2 soulstalker.otf'
#---
def command(string, layer, position):
return "convert -size 2858x1000 xc:None -fill black -font "+'"'+font+'"'+\
" -stroke None -fill white -pointsize 123 -style Normal -gravity west -draw "+\
position+"'"+string+"'"+'" '+layer
def print_tofile(string, number):
print("creating file "+number+"."*3)
layer_1 = curr_path+"/"+number+"_a.png"
layer_2 = curr_path+"/"+number+"_b.png"
cmd_1 = command(string, layer_1, '"text 497,-420 ')
cmd_2 = command(string, layer_2, '"text 1035,-420 ')
subprocess.call(["/bin/bash", "-c", cmd_1])
subprocess.call(["/bin/bash", "-c", cmd_2])
cmd_3 = "convert "+bg_file+" "+layer_1+" "+layer_2+\
" -background None -layers merge "+curr_path+"/"+number+"_ticket.png"
subprocess.call(["/bin/bash", "-c", cmd_3])
os.remove(layer_1)
os.remove(layer_2)
print("done")
ns = [str(n) for n in range(number_of_tickets+1)][1:]
for item in ns:
number = str(int(3-len(item))*"0")+item
string = number
print_tofile(string, number)
How to use
Copy it into an empty file, in th head section of the script, set:
- the number of tickets
- the (absolute) path to the font
- the name of the background image (ticket without numbers) if you want to change it
and save it as numbering.py
, together with your background image (2858px by 1000px), named background.png
in one and the same folder.
Run it by the command:
python3 /path/to/script.py
Best Answer
Select the background using the Fuzzy Selection Tool (Magic Wand)
and press the Del key.
GIF will allow you single-color transparency, while PNG has full alpha channel support.