Comment puis-je générer circulaire vignettes avec PIL?
Comment puis-je générer circulaire de vignettes d'images à l'aide de PIL?
L'espace à l'extérieur du cercle doit être transparente.
Extraits de code serait très apprécié, merci d'avance.
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est par l'utilisation de masques. Créer un noir et un masque blanc avec n'importe quelle forme que vous voulez. Et l'utilisation
putalpha
pour mettre qui forme une couche alpha:Voici le masque que j'ai utilisé:
Si vous voulez la vignette de taille variable, vous pouvez utiliser
ImageDraw
et de dessiner le masque:Si vous voulez la sortie en GIF, alors vous devez utiliser la fonction "coller" au lieu de
putalpha
:Noter que j'ai fait les modifications suivantes:
a été remplacée par du noir, et vice-versa.
Veuillez noter: Il y a un gros problème avec cette approche. Si l'image GIF contenues noir pièces, toutes d'eux deviendra transparent. Vous pouvez contourner ce problème en choisissant une autre couleur pour la transparence.
Je vous conseille fortement d'utiliser le format PNG pour cela. Mais si vous ne pouvez pas alors que c'est le meilleur que vous pourriez faire.
Je voudrais ajouter à la déjà accepté de répondre à une solution pour lisser le cercle, l'astuce consiste à produire un plus gros masque et ensuite mis à l'échelle vers le bas à l'aide d'un filtre ANTIREPLIEMENT:
voici le code
ce qui produit un bien meilleur résultat, à mon avis.