[PYTHON] Découpez et connectez des images avec ImageMagick

Ce que je voulais faire

Images de monstres pour roguelike alignées comme ça zombie_src_2x.png

↓↓↓ Je voulais changer cet ordre ...

zombie_2x.png

Il est assez difficile de traiter manuellement toutes les images de tels personnages ... all_x2.png

Donc, quand j'ai vérifié si cela pouvait être automatisé avec un script, c'était une bonne idée d'utiliser ImageMagick.

Installez ImageMagick

Puisqu'il s'agit d'un environnement Mac, je l'ai installé via MacPorts.

Si vous êtes dans un environnement Windows, vous pouvez facilement l'installer en utilisant le programme d'installation référencé ici.

manière

procédure

J'ai décidé de traiter l'image selon la procédure suivante

  1. Découpez l'image et divisez-la en une image de caractère
  2. Concaténer les images de personnages recadrées

Recadrage d'image

Utilisez l'option -crop pour recadrer l'image.

bash


  convert [Fichier d'entrée] -crop '[largeur]x[la taille]+[Coordonnée X supérieure gauche]+[Coordonnée Y supérieure gauche]' [Fichier de sortie]

Par exemple, pour recadrer l'image input.png avec une taille de 32x32 avec (x, y) = (10,20) comme coordonnée supérieure gauche, utilisez la commande suivante.

bash


  convert input.png -crop '32x32+10+20' output.png

Sur cette base, un script Python qui découpe une image zombie pour chaque partie zombie_src_2x.png

crop.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

#■ Tout d'abord, recadrez l'image
#Taille de la découpe
SIZE = 16
#Fichier d'entrée
INPUT = "all.png "

#coordonnées de départ zombie
x = 80
y = 80
for i in range(0, 15):
	#Aligné en 5x3
	ox = (i / 3) * SIZE
	oy = (i % 3) * SIZE
	ox += x
	oy += y

	#Fichier de sortie(Sortie dans le dossier tmp)
	out = "tmp/%d.png "%i

	#Création de chaîne de commande
	cmd = "/opt/local/bin/convert %s -crop '%dx%d+%d+%d' %s"%(INPUT, SIZE, SIZE, ox, oy, out)
	print cmd
	#Courir
	os.system(cmd);

Ceci est un script qui coupe le caractère de all.png et le renvoie de 0 à 14.png dans le dossier tmp. Vous pouvez maintenant le découper individuellement.

crop.png

Concaténer les images

Ensuite, connectez les images découpées. Utilisez l'option + append pour recadrer.

bash


  convert +append [Fichier d'entrée 1] [Fichier d'entrée 2] [...] [Fichier de sortie]

Par exemple, la commande pour concaténer 1.png 2.png 3.png et la sortie vers out.png est la suivante.

bash


  convert +append 1.png 2.png 3.png out.png

Voici un script Python qui concatène les images découpées en fonction de cela.

append.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

#■ Combinez des images
#Connectez-vous sur le côté
cmd = "/opt/local/bin/convert +append "
for i in range(0, 15):
	#Fichier d'entrée
	inFile = "tmp/%d.png "%i
	#Concaténer à la chaîne de commande
	cmd += inFile + " "

#Définir le nom du fichier de sortie
cmd += "zombie.png "
print cmd

#Courir
os.system(cmd)

C'est un script qui renvoie 0 à 14.png dans le dossier tmp vers "zombie.png ". En conséquence, les images peuvent être connectées comme indiqué ci-dessous.

zombie_2x.png

Après cela, si vous modifiez ce script, il semble que vous puissiez facilement parcourir tous les personnages.

prime

Agrandissez l'image des points pour qu'elle ne soit pas floue

Dans le cas d'un jeu d'images par points, les données peuvent être préparées en basse résolution pour donner une impression de points, et peuvent être agrandies et utilisées dans le jeu réel. Dans ce cas, si vous effectuez un zoom avant normalement, cela semblera flou.

Par exemple, il s'agit d'une image 32x32 points, player32x32.png

Si vous l'agrandissez à 96x96 tel quel, il semblera flou. player96x96.png

Par conséquent, il est nécessaire d'agrandir le rapport de pixels tout en le gardant fixe. player96x96point.png

Spécifiez l'option -filter box pour effectuer cette conversion dans ImageMagick.

bash


  convert -filter box -resize [grossissement]% [Fichier d'entrée] [Fichier de sortie]

Le grossissement est de 100% de la valeur standard. Par exemple, si vous souhaitez doubler la taille de l'image input.png, exécutez la commande suivante:

bash


  convert -filter box -resize 200% input.png output.png

Voici une méthode pour générer une image avec un rapport de pixels fixe et doubler l'image à l'aide d'un script Python.

scale.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

#Fichier d'entrée
INPUT = "zombie.png "
#Fichier de sortie
OUTPUT = "zombie_2x.png "
#Double
SCALE = 2

#Création de chaîne de commande
cmd = "/opt/local/bin/convert -filter box -resize %d%% %s %s"%(SCALE*100, INPUT, OUTPUT)
print cmd

#Courir
os.system(cmd)

Il s'agit d'un script qui double zombie.png et le renvoie en tant que zombie_2x.png.

Image de monstre

J'ai emprunté l'image de monstre découpée cette fois d'ici.

Il y a beaucoup de belles images qui peuvent être utilisées pour les roguelikes, ce qui est très bien.

Créer une image transparente en spécifiant une couleur transparente

Si vous spécifiez l'option -transparent, vous pouvez spécifier la couleur transparente et la sortie.

bash


  convert -transparent '#RRGGBB' [Fichier d'entrée] [Fichier de sortie]

Par exemple, la couleur d'arrière-plan de l'image du monstre utilisée cette fois est # 476c6c, donc

bash


  convert -transparent '#476c6c' zombie.png zombie_alpha.png

Ensuite, vous pouvez créer une image transparente zombie_alpha.png.

Recommended Posts

Découpez et connectez des images avec ImageMagick
Découpez une image avec python
Découpez le visage avec Python + OpenCV
Télécharger et télécharger des images avec Falcon
Capturer des images avec Pupil, python et OpenCV
Importer et exporter des images GeoTiff avec Python
Détection de visage à partir de plusieurs fichiers image avec openCV, découpez et enregistrez
Connectez Scratch X et Digispark avec bouteille
Chargez le modèle caffe avec Chainer et classez les images
Conversion en ondelettes d'images avec PyWavelets et OpenCV
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
Afficher des images intégrées de mp3 et flac avec mutagène
Avec et sans WSGI
Centrer l'image avec python-pptx
LGTM --Composez des images LGTM avec des vidéos et des photos et produisez une animation GIF
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Découpez une image d'une vidéo toutes les secondes avec Python + OpenCV