[PYTHON] Schneiden Sie Bilder aus und verbinden Sie sie mit ImageMagick

Was ich machen wollte

Monsterbilder für Roguelike reihten sich so aneinander zombie_src_2x.png

↓↓↓ Ich wollte diese Reihenfolge ändern ...

zombie_2x.png

Es ist ziemlich schwierig, alle Bilder solcher Charaktere manuell zu verarbeiten ... all_x2.png

Als ich untersuchte, ob es mit einem Skript automatisiert werden kann, war es eine gute Idee, ImageMagick zu verwenden.

Installieren Sie ImageMagick

Da es sich um eine Mac-Umgebung handelt, habe ich sie über MacPorts installiert.

Wenn Sie sich in einer Windows-Umgebung befinden, können Sie diese mithilfe des hier beschriebenen Installationsprogramms problemlos installieren.

Weise

Verfahren

Ich habe mich entschlossen, das Bild wie folgt zu verarbeiten

  1. Schneiden Sie das Bild aus und teilen Sie es in ein Zeichenbild
  2. Verketten Sie die zugeschnittenen Zeichenbilder

Bildausschnitt

Verwenden Sie die Option "-crop", um das Bild zuzuschneiden.

bash


  convert [Eingabedatei] -crop '[Breite]x[Höhe]+[X-Koordinate oben links]+[Oben links Y-Koordinate]' [Ausgabedatei]

Verwenden Sie beispielsweise den folgenden Befehl, um das Bild input.png mit einer Größe von 32 x 32 mit (x, y) = (10,20) als Koordinate oben links zuzuschneiden.

bash


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

Basierend darauf ein Python-Skript, das für jeden Teil ein Zombie-Bild ausschneidet zombie_src_2x.png

crop.py


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

import os

#■ Schneiden Sie zuerst das Bild zu
#Ausschnittgröße
SIZE = 16
#Eingabedatei
INPUT = "all.png "

#Zombie-Startkoordinaten
x = 80
y = 80
for i in range(0, 15):
	#In 5x3 aufgereiht
	ox = (i / 3) * SIZE
	oy = (i % 3) * SIZE
	ox += x
	oy += y

	#Ausgabedatei(Ausgabe in den tmp-Ordner)
	out = "tmp/%d.png "%i

	#Erstellung von Befehlszeichenfolgen
	cmd = "/opt/local/bin/convert %s -crop '%dx%d+%d+%d' %s"%(INPUT, SIZE, SIZE, ox, oy, out)
	print cmd
	#Lauf
	os.system(cmd);

Dies ist ein Skript, das das Zeichen aus all.png ausschneidet und es als 0 bis 14.png im Ordner tmp ausgibt. Jetzt können Sie es einzeln ausschneiden.

crop.png

Bilder verketten

Verbinden Sie als Nächstes die ausgeschnittenen Bilder. Verwenden Sie zum Zuschneiden die Option "+ anhängen".

bash


  convert +append [Eingabedatei 1] [Eingabedatei 2] [...] [Ausgabedatei]

Der Befehl zum Verketten von 1.png 2.png 3.png und zum Ausgeben an out.png lautet beispielsweise wie folgt.

bash


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

Hier ist ein Python-Skript, das die darauf basierend ausgeschnittenen Bilder verkettet.

append.py


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

import os

#■ Kombinieren Sie Bilder
#An die Seite anschließen
cmd = "/opt/local/bin/convert +append "
for i in range(0, 15):
	#Eingabedatei
	inFile = "tmp/%d.png "%i
	#Verketten Sie mit der Befehlszeichenfolge
	cmd += inFile + " "

#Legen Sie den Namen der Ausgabedatei fest
cmd += "zombie.png "
print cmd

#Lauf
os.system(cmd)

Es ist ein Skript, das 0 bis 14.png im tmp-Ordner an "zombie.png " ausgibt. Infolgedessen können die Bilder wie unten gezeigt verbunden werden.

zombie_2x.png

Wenn Sie danach dieses Skript ändern, scheinen Sie alle Zeichen leicht zu durchlaufen.

Bonus

Vergrößern Sie das Punktbild, damit es nicht unscharf wird

Im Fall eines Punktbildspiels können Daten in niedriger Auflösung vorbereitet werden, um ein Gefühl von Punkten zu vermitteln, und sie können vergrößert und im tatsächlichen Spiel verwendet werden. Wenn Sie in diesem Fall normal zoomen, sieht es verschwommen aus.

Dies ist beispielsweise ein 32x32-Punktbild. player32x32.png

Wenn Sie dies auf 96x96 vergrößern, sieht es verschwommen aus. player96x96.png

Daher ist es notwendig, das Pixelverhältnis zu vergrößern, während es fest bleibt. player96x96point.png

Geben Sie die Option "-filter box" an, um diese Konvertierung in ImageMagick durchzuführen.

bash


  convert -filter box -resize [Vergrößerung]% [Eingabedatei] [Ausgabedatei]

Die Vergrößerung beträgt 100% Standardwert. Wenn Sie beispielsweise die Größe der Bildeingabe.png verdoppeln möchten, führen Sie den folgenden Befehl aus:

bash


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

Das Folgende ist eine Methode, um ein Bild mit einem festen Pixelverhältnis auszugeben und das Bild mithilfe eines Python-Skripts zu verdoppeln.

scale.py


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

import os

#Eingabedatei
INPUT = "zombie.png "
#Ausgabedatei
OUTPUT = "zombie_2x.png "
#Doppelt
SCALE = 2

#Erstellung von Befehlszeichenfolgen
cmd = "/opt/local/bin/convert -filter box -resize %d%% %s %s"%(SCALE*100, INPUT, OUTPUT)
print cmd

#Lauf
os.system(cmd)

Dies ist ein Skript, das zombie.png verdoppelt und als zombie_2x.png ausgibt.

Monsterbild

Ich habe mir das Monsterbild geliehen, das diesmal von hier ausgeschnitten wurde.

Es gibt viele schöne Bilder, die für Roguelikes verwendet werden können, was sehr gut ist.

Erstellen Sie ein transparentes Bild, indem Sie eine transparente Farbe angeben

Wenn Sie die Option "-transparent" angeben, können Sie die transparente Farbe und Ausgabe angeben.

bash


  convert -transparent '#RRGGBB' [Eingabedatei] [Ausgabedatei]

Zum Beispiel ist die Hintergrundfarbe des diesmal verwendeten Monsterbildes "# 476c6c"

bash


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

Dann können Sie ein transparentes Bild zombie_alpha.png erstellen.

Recommended Posts

Schneiden Sie Bilder aus und verbinden Sie sie mit ImageMagick
Schneiden Sie ein Bild mit Python aus
Schneiden Sie das Gesicht mit Python + OpenCV aus
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
Bilder mit Pupil, Python und OpenCV aufnehmen
Importieren und Exportieren von GeoTiff-Bildern mit Python
Gesichtserkennung aus mehreren Bilddateien mit openCV, ausschneiden und speichern
Verbinden Sie Scratch X und Digispark mit der Flasche
Laden Sie das Kaffeemodell mit Chainer und klassifizieren Sie die Bilder
Wavelet-Konvertierung von Bildern mit PyWavelets und OpenCV
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
Zeigen Sie eingebettete Bilder von MP3 und Flac mit Mutagen an
Mit und ohne WSGI
Bild mit Python-Pptx zentrieren
LGTM - Erstellen Sie LGTM-Bilder mit Videos und Fotos und geben Sie GIF-Animationen aus
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Schneiden Sie mit Python + OpenCV jede Sekunde ein Bild aus einem Video aus