Ich habe das im vorherigen Artikel in Python vorgestellte Tool zum Erstellen von Masken implementiert.
Python 2.7.9 Python Imaging Library 1.1.7
Ein Maskenbild wird ausgegeben, wenn eine Bilddatei eingefügt wird. CreateMask.py [Maskenquelldatei]
[-w] Erzeugt ein Bild mit einer horizontalen Maske [-h] Erzeugt ein Bild mit einer vertikalen Maske [-o] [Ausgabedatei] Ausgabe mit dem angegebenen Dateinamen (Wenn dies nicht angegeben ist, wird die Ausgabe mit _m zum Namen der Eingabedatei hinzugefügt.)
CreateMask.py
# -*- coding: utf-8 -*-
if __name__ == "__main__":
import sys
import os
import Image
# ------------------------------------------------------------------------------------------------------
#Normale Maskenbilderzeugung
# ------------------------------------------------------------------------------------------------------
def CreateMaskNormal(src, dst) :
srcdata = list(src.getdata()) #Holen Sie sich die Originaldaten
for i in range(len(data)) :
c = data[i][3]
data[i] = (c, c, c)
dst.putdata(data)
# ------------------------------------------------------------------------------------------------------
#Bilderzeugung mit einer Maske an der Seite
# ------------------------------------------------------------------------------------------------------
def CreateMaskWidth(src, dst, width, height) :
srcdata = list(src.getdata()) #Holen Sie sich die Originaldaten
dstdata = srcdata + srcdata #Sichern Sie den Schreibzielbereich
for y in range(height) :
soff = y * width;
doff = y * width * 2;
for x in range(width) :
ct = srcdata[soff]
c = ct[3]
dstdata[doff] = (ct[0], ct[1], ct[2])
dstdata[doff + width] = (c, c, c)
soff += 1
doff += 1
dst.putdata(dstdata)
# ------------------------------------------------------------------------------------------------------
#Bilderzeugung mit vertikaler Maske
# ------------------------------------------------------------------------------------------------------
def CreateMaskHeight(src, dst, width, height) :
srcdata = list(src.getdata()) #Holen Sie sich die Originaldaten
dstdata = srcdata + srcdata #Sichern Sie den Schreibzielbereich
hlen = len(srcdata)
for y in range(height) :
off = y * width;
for x in range(width) :
ct = srcdata[off]
c = ct[3]
dstdata[off] = (ct[0], ct[1], ct[2])
dstdata[off + hlen] = (c, c, c)
off += 1
dst.putdata(dstdata)
# ------------------------------------------------------------------------------------------------------
#Erzeugung eines Maskenbildes
# ------------------------------------------------------------------------------------------------------
def CreateMask(in_file, out_file, w_scale, h_scale) :
src = Image.open(in_file)
if src.mode != "RGBA":
return False
dst = Image.new("RGB", (src.size[0] * w_scale, src.size[1] * h_scale))
if w_scale != 1 :
CreateMaskWidth(src, dst, src.size[0], src.size[1])
elif h_scale != 1 :
CreateMaskHeight(src, dst, src.size[0], src.size[1])
else :
CreateMaskNormal(src, dst)
dst.save(out_file, "png")
return True
# ------------------------------------------------------------------------------------------------------
#Hauptverarbeitung
# ------------------------------------------------------------------------------------------------------
args = sys.argv #Rufen Sie eine Liste der Befehlszeilenargumente ab
argc = len(args) #Anzahl der Argumente
w = False; #Gibt an, ob eine Maske daneben erstellt werden soll
h = False; #Gibt an, ob eine vertikale Maske erstellt werden soll
o = False; #Spezifikation der Ausgabedatei
in_file = ""; #Geben Sie den Dateinamen ein
out_file = ""; #Name der Ausgabedatei
#Überprüfen Sie die Argumente
for i in range(1, argc):
if args[i] == "-w":
w = True
elif args[i] == "-h":
h = True
elif args[i] == "-o":
o = True
out_file = args[i + 1]
elif o:
o = False
out_file = args[i]
else:
in_file = args[i]
if in_file == "":
print u"CreateMask.py [Name der zu lesenden Bilddatei]"
print u"-w Generieren Sie eine horizontale Maske"
print u"-h Generieren Sie eine vertikale Maske"
print u"-o Name der Ausgabedatei Legen Sie den Namen der Ausgabedatei fest"
print u"Wenn keine Einstellung vorhanden ist, in der Eingabedatei_m wird hinzugefügt und ausgegeben"
sys.exit()
path = os.path.dirname(in_file)
if path != "" :
path += u"/"
if out_file == "" :
#Wenn es keinen Namen für die Ausgabedatei gibt, befindet er sich in der Eingabedatei_Set mit m hinzugefügt
file, ext = os.path.splitext(os.path.basename(in_file))
out_file = path + file + u"_m.png ";
elif os.path.exists(out_file) != u".png " :
#Zur Erweiterung.Png einstellen
out_file = path + os.path.basename(out_file) + ".png ";
#Breiteneinstellung
w_scale = 1
if w :
w_scale = 2
#Höheneinstellung
h_scale = 1
if h and not w:
h_scale = 2
#Erstellen Sie eine Maske
CreateMask(in_file, out_file, w_scale, h_scale);
Jetzt können Sie es auf Mac konvertieren! Bitte beachten Sie, dass ohne die Installation der Python Imaging Library </ b> nicht funktioniert.
Recommended Posts