[PYTHON] Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten

Ich hatte die Möglichkeit, eine Figur mit einem Kissen zu zeichnen, aber als ich sie mit den Standardeinstellungen zeichnete, stellte sich heraus, dass es sich um ein flatterndes Bild handelte. Wenn Sie es sauber machen möchten, können Sie es in doppelter Größe exportieren und beim Ändern der Größe Antialiasing angeben, aber es ist etwas ärgerlich. Ich habe ein Modul gefunden, das von Anfang an wunderschön gezeichnet werden kann, also werde ich es aufschreiben.

Referenz https://stackoverrun.com/ja/q/3880127 Referenz https://aggdraw.readthedocs.io/en/latest/

Normal mit Kissen zeichnen

Es sieht so aus, wenn Sie normal mit Pollow zeichnen. Kannst du sehen, dass die Hörner nicht verarbeitet werden und es Zacken gibt?

from PIL import Image, ImageDraw

image = Image.new('RGB', (300, 300), (255, 255, 255))
draw = ImageDraw.Draw(image)
draw.line((150, 50, 250, 250, 50, 250, 150, 50), fill=(0, 0, 0), width=20)
draw.line((10, 140, 290, 160), fill=(0, 0, 0), width=20)

image.save('test1.png', quality=100)

test1.png

Zeichnen Sie normal mit Kissen und um die Ecken

Derzeit ist die Abrundung von Ecken in der neueren Version des Kissens implementiert. Fügen Sie dem Argument einfach * Joint = "Kurve" * hinzu.

from PIL import Image, ImageDraw

image = Image.new('RGB', (300, 300), (255, 255, 255))
draw = ImageDraw.Draw(image)
draw.line((150, 50, 250, 250, 50, 250, 150, 50), fill=(0, 0, 0), width=20, joint="curve")
draw.line((10, 140, 290, 160), fill=(0, 0, 0), width=20)

image.save('test2.png', quality=100)

test2.png

Dies wird die Ecken abrunden. Anfang und Ende des Schreibens werden nicht verarbeitet. Wenn Sie also neugierig sind, verfolgen Sie die erste Seite erneut.

from PIL import Image, ImageDraw

image = Image.new('RGB', (300, 300), (255, 255, 255))
draw = ImageDraw.Draw(image)
draw.line((150, 50, 250, 250, 50, 250, 150, 50, 250, 250), fill=(0, 0, 0), width=20, joint="curve")
draw.line((10, 140, 290, 160), fill=(0, 0, 0), width=20)

image.save('test3.png', quality=100)

test3.png

Zeichnen Sie mit Aggdraw

Die Installation mit Pip war normal

pip install aggdraw

Mit aggdraw können Sie so zeichnen, wie es auf dem mit Kissen erstellten Bild ist. Es ist, als würde man einen Stift definieren und damit schreiben. Können Sie sehen, dass der Jagi verschwunden ist, weil er selbst Anti-Aliasing und Alphasynthese durchführt?

from PIL import Image
import aggdraw

image = Image.new('RGB', (300, 300), (255, 255, 255))
draw = aggdraw.Draw(image)
pen = aggdraw.Pen((0, 0, 0), 20)
draw.line((150, 50, 250, 250, 50, 250, 150, 50, 250, 250), pen)
draw.line((10, 140, 290, 160), pen)
draw.flush()

image.save('test4.png', quality=100)

test4.png

Bonus

Es gibt auch einen Pinsel (Füllung)

from PIL import Image
import aggdraw

image = Image.new('RGBA', (300, 300), (255, 255, 255, 255))
draw = aggdraw.Draw(image)
brush = aggdraw.Brush((0, 0, 0), 255)
draw.line((150, 50, 250, 250, 50, 250, 150, 50, 250, 250), brush)
draw.flush()

image.save('test5.png', quality=100)

test5.png

Recommended Posts

Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten
Wenn Sie es so verwenden möchten, wie es ist, wenn Sie es mit Lambda-Memo verwenden
Ein Gist-Repository, das Sie verwenden können, wenn Sie es mit ansible ausprobieren möchten
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Wenn Sie mit dem Django REST-Framework filtern möchten
Persönliche Best-Practice-Vorlage, die verwendet werden soll, wenn Sie MVP mit Flask erstellen möchten
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Wenn Sie die Anfangsdaten von Django mit Relationen registrieren möchten
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Ich kenne? Datenanalyse mit Python oder Dingen, die Sie mit numpy verwenden möchten, wenn Sie möchten
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
Wenn Sie das Intervall der Achsenskala mit APLpy anpassen möchten
Wenn Sie eine Spalte spaltenweise durch einen fehlenden Wert (NaN) ersetzen möchten
Bedeutet Memo, wenn versucht wird, maschinelles Lernen mit 50 Bildern durchzuführen
Ich möchte MATLAB feval mit Python verwenden
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte -inf nicht mit np.log verwenden
Ich möchte ip vrf mit SONiC verwenden
So erstellen Sie eine Umgebung, wenn Sie Python2.7 nach der Installation von Anaconda3 verwenden möchten
[OpenCV] Wenn Sie überprüfen möchten, ob es mit imread richtig gelesen wird
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Wenn Sie Cython verwenden möchten, schließen Sie auch python-dev ein
Links, um mit Sublime Text zu tun, was Sie wollen
Dinge zu tun, wenn Sie anfangen, sich mit Django zu entwickeln
Wenn Sie in der for-Anweisung plt.save möchten
Site-Hinweise zur Verwendung von NetworkX mit Python
Die Programmiersprache, die Sie verwenden möchten
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Wenn die Variable, die Sie in Matplotlib als hochgestellt verwenden möchten, aus zwei oder mehr Zeichen besteht
Was tun, wenn Sie bei Verwendung von ortoolpy.logistics_network keine japanischen Spaltennamen verwenden möchten?
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ich möchte R-Funktionen einfach mit ipython notebook verwenden
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Nützliche Operation, wenn Sie alle Probleme in mehreren Programmiersprachen mit Codewars lösen möchten
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Wenn Sie möchten, dass Ihre Kollegen dieselbe Sprache verwenden
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Was tun, wenn beim Versuch, pip mit pyenv zu verwenden, ein undefinierter Fehler angezeigt wird?
Wenn Sie mehrere Versionen derselben Python-Bibliothek verwenden möchten (virtuelle Umgebung mit venv)
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich möchte eine externe Bibliothek mit IBM Cloud-Funktionen verwenden
Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor
[TensorFlow] Wenn Sie TensorBoard ausführen möchten, installieren Sie es mit pip.
Wenn Sie eine mehrdimensionale Liste nach mehreren Zeilen sortieren möchten
Ich möchte wirklich GitHub Flavored Markdown (GFM) mit Pelican verwenden!
Python: So verwenden Sie Async mit
Schön dich mit Python zu treffen
So verwenden Sie virtualenv mit PowerShell