Я разработал билет, который включает последовательный номер билета (001,002,003... 500), и теперь я должен экспортировать каждый номер билета как отдельное изображение PNG.
Это - большой физический труд, и я спрашиваю, существует ли плагин или сценарий, который я могу использовать, чтобы сделать это автоматически - что-то, что я могу дать текстовому слою для изменения инкрементно затем экспорта изображение.
Править
Это - мой билет.
Номер билета в левом угле - 2014/001-> 2014/500
Размер изображения: 2858 пкс на 1000 пкс
Шрифт номера билета является Dirt2 SoulStalker
Я думаю, что получил его работа.
Процедура - то, что Вы помещаете фоновое изображение (названный "background.png", билетом без числа, но с 2014/
) в папке, вместе со сценарием ниже. Затем если Вы запускаете скрипт (после того, как, редактируя эти три строки в главном разделе):
Сценарий производит числа из 001
кому: 500
(но это может быть любое число, которое Вы определяете в главном разделе), Впоследствии, с помощью imagemagick
:
сценарий создает (число числом) отдельные слои (файлы) с числом в правильном положении
Вам, вероятно, придется установить imagemagick
:
sudo apt-get install imagemagick
Я использовал эту бесплатную версию шрифта. Оказалось, что в сценарии, я должен был установить полный путь к шрифту для него для работы. Я просто скопировал его в ~/.fonts
и используемый тот путь. В главном разделе сценария, набор Ваш.
#!/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)
Скопируйте его в пустой файл, в разделе головы th сценария, установите:
и сохраните его как numbering.py
, вместе с Вашим фоновым изображением (2858 пкс на 1000 пкс), названный background.png
в одной и той же папке.
Выполните его командой:
python3 /path/to/script.py