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/
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)
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)
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)
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)
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)
Recommended Posts