1 votes

Plugin GIMP pour changer le numéro de ticket et exporter l'image automatiquement

J'ai conçu un billet qui comprend un numéro de billet séquentiel (001,002,003...500) et maintenant je dois exporter chaque numéro de billet comme une image PNG séparée.

C'est beaucoup de travail manuel et je demande s'il existe un plugin ou un script que je peux utiliser pour le faire automatiquement - quelque chose à quoi je peux donner la couche de texte à modifier de manière incrémentielle puis exporter l'image.

MODIFIER

Ceci est mon billet.
Le numéro de billet est dans le coin gauche - 2014/001 -> 2014/500
Taille de l'image: 2858px par 1000px
La police de caractères du numéro de billet est Dirt2 SoulStalker

entrez la description de l'image ici

1voto

Jacob Vlijm Points 78990

Je pense que j'ai réussi à le faire fonctionner.

entrer la description de l'image ici

La procédure est que vous mettez l'image de fond (nommée "background.png", le ticket sans le numéro, mais avec 2014/) dans un dossier, avec le script ci-dessous. Ensuite, si vous exécutez le script (après avoir modifié les trois lignes dans la section head):

  • Le script produit des numéros de 001 à 500 (mais cela peut être n'importe quel nombre que vous définissez dans la section head) Ensuite, en utilisant imagemagick:

  • le script crée (nombre par nombre) des couches (fichiers) distinctes avec le numéro à la bonne position

  • il copie la couche de fond + les couches de numéro dans un nouveau fichier, enregistré dans le même dossier, pour chaque numéro.

  • le script supprime ensuite les couches supplémentaires (temporaires)

entrer la description de l'image ici

Remarques

  • Vous devrez peut-être installer imagemagick:

    sudo apt-get install imagemagick
  • J'ai utilisé la version gratuite de la police de caractères. Il s'est avéré que dans le script, j'ai dû définir le chemin absolu de la police de caractères pour que cela fonctionne. Je l'ai simplement copié dans ~/.fonts et utilisé ce chemin. Dans la section head du script, définissez le vôtre.

Le 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)

Comment utiliser

Copiez-le dans un fichier vide, dans la section head du script, définissez:

  • le nombre de billets
  • le chemin (absolu) vers la police de caractères
  • le nom de l'image de fond (billet sans numéros) si vous voulez le changer

et enregistrez-le sous le nom de numbering.py, avec votre image de fond (2858px par 1000px), nommée background.png dans un seul et même dossier.

Exécutez-le avec la commande:

python3 /chemin/vers/script.py

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X