Plugin GIMP para alterar o número do ticket e exportar a imagem automaticamente

1

Eu projetei um ticket que inclui um número de ticket seqüencial (001,002,003 ... 500) e agora tenho que exportar cada número de ticket como uma imagem PNG separada.

Isso é muito trabalho manual e estou perguntando se existe um plug-in ou script que eu possa usar para fazer isso automaticamente - algo que posso dar à camada de texto para alterar de forma incremental e exportar a imagem.

EDITAR

Este é meu ingresso.
O número do bilhete está no canto esquerdo - 2014/001 - > 2014/500
Tamanho da imagem: 2858px por 1000px
A fonte do número do bilhete é Dirt2 SoulStalker

    
por Parto 22.11.2014 / 07:59

1 resposta

1

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 a 500 (mas pode ser qualquer número definido na seção principal) Posteriormente, usando imagemagick :

  • 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êpodeterqueinstalaroimagemagick:

    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
    
por Jacob Vlijm 23.11.2014 / 00:05

Tags