Acho que funcionei.
Oprocedimentoéquevocêcoloqueaimagemdefundo(chamada"background.png", o ticket sem o número, mas com 2014/
) em uma pasta, junto com o script abaixo. Então, se você executar o script (depois de editar as três linhas na seção head):
-
O script produz números de
001
a500
(mas pode ser qualquer número definido na seção principal) Posteriormente, usandoimagemagick
: -
o script cria (número por número) camadas separadas (arquivos) com o número na posição correta
- copia a camada de plano de fundo + as camadas numéricas para um novo arquivo, salvo na mesma pasta, para cada número.
- o script remove as camadas adicionais (temporárias)
Notas
Vocêpodeterqueinstalaro
imagemagick
:sudoapt-getinstallimagemagick
Euusei
esta versão gratuita da fonte. Descobri que no script, eu tinha que definir o caminho absoluto para a fonte para que ele funcionasse. Acabei de copiá-lo para ~/.fonts
e usei esse caminho. Na seção principal do script, defina o seu.
O 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)
Como usar
Copie-o para um arquivo vazio, na seção principal do script, defina:
- o número de tickets
- o caminho (absoluto) para a fonte
- o nome da imagem de fundo (ticket sem números) se você quiser alterá-lo
e salve-o como numbering.py
, junto com sua imagem de plano de fundo (2858px por 1000px), chamada background.png
em uma e a mesma pasta.
Execute-o pelo comando:
python3 /path/to/script.py