[PYTHON] Générer du texte d'image ensemble

Récemment, la prise en charge des navigateurs CSS s'est améliorée, et même le texte brut a une puissance d'expression suffisante, donc je pense qu'il vaut mieux ne pas créer d'image dans le contenu Web.

Cependant, selon le projet, il peut être inévitable que vous souhaitiez transformer toutes les informations textuelles gérées dans la base de données en images.

Vous pouvez le gérer un par un avec les produits Adobe, J'ai créé un outil de ligne de commande car il me submerge rapidement et j'ai l'impression que je vais perdre la tête si des changements de couleur ou de taille se produisent plus tard.

https://github.com/koji0330/imageTextGenerator

J'appelle simplement la commande ImageMagick en spécifiant la taille et la police des caractères dans le fichier JSON, mais ImageMagick est très pratique. J'utilise python pour lire le fichier JSON et exécuter des commandes, mais comme il s'agit d'un processus simple, je pense que n'importe quel langage peut être utilisé.

{
    "sets": [
        {
            "font": "/Library/Fonts/Hiragino Mincho Pro W6.otf",
            "size": "23",
            "color": "#000",
            "convert": [
                {
                    "label": "Image de titre 1",
                    "imgpath": "img/txt_title1.png "
                }, {
                    "label": "Image titre 2",
                    "imgpath": "img/txt_title2.png "
                }
            ]
        }, {
            "size": "29",
            "font": "/Library/Fonts/Hiragino Kakugo Pro W6.otf",
            "color": "#EA5304",
            "convert": [
                {
                    "label": "0123456789",
                    "imgpath": "img/num_0123456789.png "
                }, {
                    "label": "9876543210",
                    "imgpath": "img/num_9876543210.png ",
                    "color": "#f33"
                }
            ]
        }
    ]
}
#!/usr/bin/python
# -*- encoding: utf-8 -*-

import json, argparse, commands

parser = argparse.ArgumentParser(
	description='Generate image text from json file.'
)
parser.add_argument(
	'conf_file',
	nargs='?',
	default='config.json',
	help='config file'
)

args = parser.parse_args()

# Load config file
f = open(args.conf_file, "rU")
loaded = json.load(f)
f.close()

for set in loaded['sets']:
	font = set.get('font', '');
	size = set.get('size', '30');
	label = set.get('label', 'undefined');
	background = set.get('background', 'None');
	color = set.get('color', '#000');
	imgpath = set.get('imgpath', 'undefined.png');
	for convert in set['convert']:
		font = convert.get('font', font);
		size = convert.get('size', size);
		label = convert.get('label', label);
		background = convert.get('background', background);
		color = convert.get('color', color);
		imgpath = convert.get('imgpath', imgpath);
		conv_cmd = u'convert -background %s -fill "%s" -font "%s" -pointsize %s label:"%s" %s' % (background, color, font, size, label, imgpath)
		print conv_cmd
		out = commands.getoutput(conv_cmd.encode('utf_8'))
		print out
print

S'il y a trop d'exigences pour la création d'image, il peut être possible de créer une API de création d'image sur le même serveur.

Recommended Posts

Générer du texte d'image ensemble
Générer une image verticale d'un roman à partir de données textuelles
Générer une image Docker à l'aide de Fabric
Générer automatiquement un collage à partir de la liste d'images
Ajouter des lignes et du texte sur l'image
Essayez de générer une image avec aliénation