Un outil pour créer des images de masque pour ETC en Python

J'ai implémenté l'outil de création de masque présenté dans l'article précédent en python.

Environnement de développement

Python 2.7.9 Python Imaging Library 1.1.7

Aperçu

Une image de masque est sortie lorsqu'un fichier image est inséré. CreateMask.py [Fichier source du masque]

option

[-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);

finalement

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

Un outil pour créer des images de masque pour ETC en Python
Comment régler le contraste de l'image en Python
Notes J'ai recherché la création d'outils de ligne de commande en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Essayez de calculer RPN avec Python (pour les débutants)
Comment rendre le Python des débutants plus rapide [numpy]
Comment apporter des modifications à l'interpréteur Python dans Pycharm
Format d'image en Python
[Pour les débutants] Comment utiliser la commande say avec python!
Essayez de créer un module Python en langage C
Faire de chaque page PowerPoint un fichier image en Python
Faisons un outil de veille de commande avec python
Remarque sur l'attribution de textures d'image aux matériaux dans Maya python
Expliquez en détail comment créer un son avec python
Comment exécuter python dans l'espace virtuel (pour MacOS)
Convertissez l'image au format .zip en PDF avec Python
Comment créer un outil CLI interactif avec Golang
Comment créer un téléchargeur d'image avec Bottle (Python)
Python3> slice copy / slice notation> utilisé dans les instructions for, etc.
Python Open CV a essayé d'afficher l'image sous forme de texte.
Pour vider stdout en Python
Connectez-vous au site Web en Python
Techniques de tri en Python
Ne faites pas test.py en Python!
Tweet avec image en Python
Créer un bookmarklet en Python
Rendre Opencv disponible en Python
Parler avec Python [synthèse vocale]
Segfo python en 2 lignes
Collection de traitement d'image en Python
Comment développer en Python
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Introduction à Python pour, pendant
À propos de "for _ in range ():" de python
Publier sur Slack en Python
Essayez de le faire avec GUI, PyQt en Python
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Un moyen simple d'éviter plusieurs boucles for en Python
Comment définir plusieurs variables dans une instruction Python for
Conseils pour coder courts et faciles à lire en Python
Comment créer un package Python (écrit pour un stagiaire)
Comment spécifier Cache-Control pour le stockage BLOB dans le stockage Azure en Python
Astuces utiles liées à la liste et aux instructions en Python
Comment implémenter Python EXE pour Windows avec le conteneur Docker
J'ai fait un chronomètre en utilisant tkinter avec python
Je veux ajouter un joli complément à input () en python
Convertir un fichier Excel en texte en Python à des fins de comparaison
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
Rechercher les fuites de mémoire dans Python
Choses à surveiller lors de l'utilisation d'arguments par défaut en Python
Voulez-vous attendre un usage général avec Python Selenium?
Segfo python en une ligne
[Python] Comment faire PCA avec Python
Rechercher des commandes externes avec python
Installez RDKit, un outil informatique de chimie pour Python
Implémentation de la segmentation d'image en python (Union-Find)
Convertir Markdown en PDF en Python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
Lancez des commandes pour rendre CentOS 7 discret dans Parallels Desktop 16 pour Mac