[PYTHON] Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller

J'ai eu l'occasion de dessiner une figure en utilisant un oreiller, mais lorsque je l'ai dessinée avec les paramètres par défaut, il s'est avéré être une image flottante. Si vous voulez le rendre propre, vous pouvez l'exporter en double taille et spécifier l'anticrénelage lors du redimensionnement, mais c'est un peu ennuyeux. J'ai trouvé un module qui peut être magnifiquement dessiné dès le début, je vais donc l'écrire.

Référence https://stackoverrun.com/ja/q/3880127 Référence https://aggdraw.readthedocs.io/en/latest/

Dessinez normalement avec un oreiller

Cela ressemble à ceci lorsque vous dessinez normalement avec pollow. Pouvez-vous voir que les cornes ne sont pas traitées et qu'il y a des dentelures?

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

Dessinez normalement avec un oreiller et arrondissez les coins

Pour le moment, l'arrondi des coins est implémenté dans la nouvelle version de l'oreiller. Ajoutez simplement * joint = "curve" * à l'argument.

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

Cela arrondira les coins. Le début et la fin de l'écriture ne sont pas traités, donc si vous êtes curieux, retracez le premier côté.

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

Dessiner avec aggdraw

L'installation était normale avec pip

pip install aggdraw

Avec aggdraw, vous pouvez dessiner tel quel sur l'image créée avec l'oreiller. C'est comme définir un stylo et écrire avec. Pouvez-vous voir que le jagi est parti parce qu'il fait lui-même l'anti-aliasing et la synthèse alpha?

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

prime

Il y a aussi un pinceau (fill)

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

Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Un référentiel essentiel à utiliser lorsque vous souhaitez l'essayer avec ansible
Paramètres lorsque vous souhaitez exécuter python-mecab avec travis
Lorsque vous souhaitez filtrer avec le framework Django REST
Modèle de bonnes pratiques personnelles à utiliser lorsque vous souhaitez créer MVP avec Flask
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Lorsque vous souhaitez enregistrer les données initiales de Django avec des relations
Lorsque vous souhaitez utiliser python 2.x sur Gentoo Linux moderne
Je connais? Analyse de données à l'aide de Python ou de choses que vous souhaitez utiliser quand vous le souhaitez avec numpy
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy
Lorsque vous souhaitez remplacer une colonne par une valeur manquante (NaN) colonne par colonne
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images
Je veux utiliser MATLAB feval avec python
Lorsque vous souhaitez mettre à jour le pilote Chrome.
Je souhaite utiliser le répertoire temporaire avec Python2
Je ne veux pas utiliser -inf avec np.log
Je souhaite utiliser ip vrf avec SONiC
Comment créer un environnement lorsque vous souhaitez utiliser python2.7 après l'installation d'Anaconda3
[OpenCV] Lorsque vous voulez vérifier s'il est lu correctement avec imread
Si vous voulez créer un bot discord avec python, utilisons un framework
Si vous souhaitez utiliser Cython, incluez également python-dev
Liens pour faire ce que vous voulez avec Sublime Text
Choses à faire lorsque vous commencez à développer avec Django
Lorsque vous voulez plt.save dans l'instruction for
Notes de site pour vous aider à utiliser NetworkX avec Python
Le langage de programmation que vous souhaitez pouvoir utiliser
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Lorsque la variable que vous souhaitez utiliser comme exposant dans matplotlib comporte deux caractères ou plus
Que faire si vous ne souhaitez pas utiliser de noms de colonnes japonais lors de l'utilisation d'ortoolpy.logistics_network
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
Je souhaite utiliser facilement les fonctions R avec le notebook ipython
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
Opération utile lorsque vous souhaitez résoudre tous les problèmes dans plusieurs langages de programmation avec Codewars
[Python] Je souhaite utiliser l'option -h avec argparse
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
[Python] Lorsque vous souhaitez importer et utiliser votre propre package dans le répertoire supérieur
Si vous souhaitez que vos collègues utilisent la même langue
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Lorsque vous souhaitez lancer une commande UNIX sur Python
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Lorsque vous souhaitez utiliser plusieurs versions de la même bibliothèque Python (environnement virtuel utilisant venv)
[Sous-processus] Lorsque vous souhaitez exécuter un autre programme Python en code Python
Si vous souhaitez devenir data scientist, commencez par Kaggle
Notez ce que vous avez fait pour utiliser Flycheck avec Python
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je souhaite utiliser une bibliothèque externe avec IBM Cloud Functions
Préparer un environnement pour utiliser OpenCV et Pillow avec AWS Lambda
[TensorFlow] Si vous souhaitez exécuter TensorBoard, installez-le avec pip.
Lorsque vous souhaitez trier une liste multidimensionnelle sur plusieurs lignes
Je veux vraiment utiliser GitHub Flavored Markdown (GFM) avec Pelican!
Python: comment utiliser async avec
Ravi de vous rencontrer avec python
Pour utiliser virtualenv avec PowerShell