J'ai implémenté l'outil de création de masque présenté dans l'article précédent en python.
Python 2.7.9 Python Imaging Library 1.1.7
Une image de masque est sortie lorsqu'un fichier image est inséré. CreateMask.py [Fichier source du masque]
[-w] Génère une image avec un masque horizontal [-h] Génère une image avec un masque vertical [-o] [Fichier de sortie] Sortie avec le nom de fichier spécifié (si ce n'est pas spécifié, sortie avec _m ajouté au nom du fichier d'entrée)
CreateMask.py
# -*- coding: utf-8 -*-
if __name__ == "__main__":
import sys
import os
import Image
# ------------------------------------------------------------------------------------------------------
#Génération d'image de masque normal
# ------------------------------------------------------------------------------------------------------
def CreateMaskNormal(src, dst) :
srcdata = list(src.getdata()) #Obtenez les données originales
for i in range(len(data)) :
c = data[i][3]
data[i] = (c, c, c)
dst.putdata(data)
# ------------------------------------------------------------------------------------------------------
#Génération d'images avec un masque sur le côté
# ------------------------------------------------------------------------------------------------------
def CreateMaskWidth(src, dst, width, height) :
srcdata = list(src.getdata()) #Obtenez les données originales
dstdata = srcdata + srcdata #Sécurisez la zone de destination d'écriture
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)
# ------------------------------------------------------------------------------------------------------
#Génération d'images avec masque vertical
# ------------------------------------------------------------------------------------------------------
def CreateMaskHeight(src, dst, width, height) :
srcdata = list(src.getdata()) #Obtenez les données originales
dstdata = srcdata + srcdata #Sécurisez la zone de destination d'écriture
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)
# ------------------------------------------------------------------------------------------------------
#Génération d'image de masque
# ------------------------------------------------------------------------------------------------------
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
# ------------------------------------------------------------------------------------------------------
#Traitement principal
# ------------------------------------------------------------------------------------------------------
args = sys.argv #Obtenir une liste d'arguments de ligne de commande
argc = len(args) #Nombre d'arguments
w = False; #S'il faut créer un masque à côté
h = False; #S'il faut créer un masque vertical
o = False; #Spécification du fichier de sortie
in_file = ""; #Nom du fichier d'entrée
out_file = ""; #Nom du fichier de sortie
#Vérifiez les arguments
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 [Nom du fichier image à lire]"
print u"-w Générer un masque horizontal"
print u"-h Générer un masque vertical"
print u"-o Nom du fichier de sortie Définir le nom du fichier de sortie"
print u"S'il n'y a pas de réglage, dans le fichier d'entrée_m est ajouté et produit"
sys.exit()
path = os.path.dirname(in_file)
if path != "" :
path += u"/"
if out_file == "" :
#S'il n'y a pas de nom de fichier de sortie, il sera dans le fichier d'entrée_Ensemble avec m ajouté
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 " :
#Vers l'extension.Définir png
out_file = path + os.path.basename(out_file) + ".png ";
#Réglage de la largeur
w_scale = 1
if w :
w_scale = 2
#Réglage de la hauteur
h_scale = 1
if h and not w:
h_scale = 2
#Créer un masque
CreateMask(in_file, out_file, w_scale, h_scale);
Vous pouvez maintenant le convertir sur mac! Veuillez noter que cela ne fonctionnera pas sans l'installation de la bibliothèque d'imagerie Python </ b>.
Recommended Posts