8
votes

Python Imaging Bibliothèque (PIL) Dessin - Rectangle arrondi avec dégradé

J'essaie d'utiliser Pil pour dessiner un rectangle avec des coins arrondis et un gradient pour la couleur. J'ai trouvé un site web cool ( http://web.archive.org/web/20130306020911/http://nadiana.com/pil-Tutorial-Basic-Advanced-Drawing#Dectangle ) qui montre comment dessiner une couleur solide arrondie Rectangle et je suis content de cela, mais je veux pouvoir dessiner un qui commence la lumière rouge au sommet et se rend au rouge foncé en bas.

Ma première pensée était d'utiliser le code dans le site Web ci-dessus pour dessiner un rectangle arrondi, puis recouvrer un deuxième rectangle blanc au noir sur le rectangle arrondi, en utilisant l'alpha mélange. Tout ce que j'ai essayé finit par parler dans mon visage.

J'ai vu des solutions presque manquées à l'aide de NUMPY, mais je ne suis pas suffisamment qualifié pour commuer ces fragments de code à une solution réussie. Je vous serais reconnaissant si une personne pouvait montrer comment modifier le code dans le lien ci-dessus, implémenter mon idée de superposition ou montrer une solution complètement meilleure pour obtenir un rectangle arrondi avec un python à python.

acclamations, Ferris


0 commentaires

5 Réponses :


15
votes

Ceci est une méthode de force très brute, mais elle fait le travail. Le code pour produire les gradients a été emprunté à ici . xxx

exécuté de gauche à droite (Runtopbottom = false):

Entrez la description de l'image ici

en cours de haut en bas (Runtopbottom = true):

 Entrez la description de l'image ici


3 commentaires

La force brute est assez bonne pour que mon expérience de statistique amateur. Merci.


Suis-je en train d'utiliser ce mauvais ou quelque chose, lorsque je colle l'image sur d'autres coins transparents, tournez le noir, et les coins internes tournent la couleur de démarrage


@Jamie Lorsque vous collez, réglez le masque sur l'image que vous collez. Coller (im, boîte = aucun, masque = aucun) <== Définissez le masque sur l'image oreiller.readthedocs.io/en/stable/reeferenced/...



11
votes

Si quelqu'un à l'avenir recherche une solution légèrement plus clé en virage pouvant être corrigée sur ImageDraw, j'ai écrit ce qui suit.

espérons-le, cela aide.

Exemple: Entrez la description de l'image ici Code: xxx


2 commentaires

Hé, comment j'utiliserais alors cela? C'est exactement ce dont j'ai besoin


`# Un exemple: de PIL Importation Image, ImageRraw, ImageFont New_Image: image = image.new (" rgba ", taille, (255, 255, 255, 0)) D: imagédraw = imagédraw.draw (new_image) d.Rounded_rectangle (xy, coin_radius) `



3
votes

Pour toute personne à la recherche d'une version mise à jour, il s'agit d'une version modifiée de la réponse de Whelchel à l'aide d'un oreiller 7.2.0 au lieu de PIL. (J'ai eu un problème avec des contours utilisant la version précédente)

code: xxx


0 commentaires

2
votes

Un rect arrondi est désormais officiellement fourni dans Oreiller 8.2.0, arrondid_rectangle https://github.com/python-pillow/pillow/pull/5208 xxx

 rectangle bleu avec des coins arrondis

Si le lisse est nécessaire, il faut bien regarder https: // github .com / python-oreiller / oreiller / numéros / 4765


0 commentaires

0
votes
icon_base = Image.new('RGBA', base.size, (255, 255, 255, 0))
iss = (28, 28)
icon, alpha_layer = circle_pic(icon)
icon = icon.resize(iss)
alpha_layer = alpha_layer.resize(iss)
icon_base.paste(icon, (ip[0], ip[1], ip[0] + iss[0], ip[1] + iss[1]), alpha_layer)

2 commentaires

Pouvez-vous s'il vous plaît donner une brève description de la fonctionnement de votre code


J'espère que la modification pourrait aider