Ein Tool zum Erstellen von Maskenbildern für ETC in Python

Ich habe das im vorherigen Artikel in Python vorgestellte Tool zum Erstellen von Masken implementiert.

Entwicklungsumgebung

Python 2.7.9 Python Imaging Library 1.1.7

Überblick

Ein Maskenbild wird ausgegeben, wenn eine Bilddatei eingefügt wird. CreateMask.py [Maskenquelldatei]

Möglichkeit

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

Schließlich

Jetzt können Sie es auf Mac konvertieren! Bitte beachten Sie, dass ohne die Installation der Python Imaging Library </ b> nicht funktioniert.

Recommended Posts

Ein Tool zum Erstellen von Maskenbildern für ETC in Python
So passen Sie den Bildkontrast in Python an
Hinweise Ich habe nachgeschlagen, um Befehlszeilentools in Python zu erstellen
Verwendung der Python-Bildbibliothek in der Python3-Serie
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Wie man Python für Anfänger schneller macht [numpy]
So nehmen Sie Python Interpreter-Änderungen in Pycharm vor
Bildformat in Python
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Machen Sie jede PowerPoint-Seite zu einer Bilddatei in Python
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Beachten Sie, dass Sie Materialien in Maya Python Bildtexturen zuweisen
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
So führen Sie Python im virtuellen Raum aus (für MacOS)
Konvertieren Sie das Bild in .zip mit Python in PDF
So erstellen Sie ein interaktives CLI-Tool mit Golang
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
Python3> Slice-Kopie / Slice-Notation> wird für Anweisungen usw. verwendet.
Python Open CV hat versucht, das Bild im Text anzuzeigen.
So löschen Sie stdout in Python
Melden Sie sich auf der Website in Python an
Techniken zum Sortieren in Python
Mach nicht test.py in Python!
Tweet mit Bild in Python
Erstellen Sie ein Lesezeichen in Python
Stellen Sie Opencv in Python zur Verfügung
Sprechen mit Python [Text zu Sprache]
Segfo Python in 2 Zeilen
Bildverarbeitungssammlung in Python
Wie man in Python entwickelt
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Einführung in Python For, While
Über "für _ in range ():" von Python
Post an Slack in Python
Versuchen Sie es mit GUI, PyQt in Python
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Eine einfache Möglichkeit, mehrere for-Schleifen in Python zu vermeiden
So definieren Sie mehrere Variablen in einer Python for-Anweisung
Tipps zum Codieren kurz und einfach in Python zu lesen
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Festlegen der Cache-Steuerung für den BLOB-Speicher in Azure Storage in Python
Nützliche Tricks in Bezug auf Listen und Anweisungen in Python
So implementieren Sie Python EXE für Windows mit Docker-Container
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Konvertieren Sie eine Excel-Datei für verschiedene Zwecke in Python in Text
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Überprüfen Sie Python auf Speicherlecks
Dinge, auf die Sie achten müssen, wenn Sie Standardargumente in Python verwenden
Möchten Sie mit Python Selenium auf allgemeine Zwecke warten?
Segfo Python in einer Zeile
[Python] Wie man PCA mit Python macht
Suchen Sie mit Python nach externen Befehlen
Installieren Sie RDKit, ein chemisches Informatik-Tool für Python
Implementierte Bildsegmentierung in Python (Union-Find)
Konvertieren Sie Markdown in Python in PDF
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Starten Sie Befehle, um CentOS 7 in Parallels Desktop 16 für Mac unauffällig zu machen