Comment puis-je transformer tous les éléments de fond blanc et blanc d'une image png ou jpg dans un motif transparent en utilisant PIL?Fond blanc à fond transparent en utilisant PIL python
3
A
Répondre
5
En utilisant numpy, ce qui suit rend les zones blanches transparentes. Vous pouvez modifier threshold
et dist
pour contrôler la définition de "white-ish".
import Image
import numpy as np
threshold=100
dist=5
img=Image.open(FNAME).convert('RGBA')
# np.asarray(img) is read only. Wrap it in np.array to make it modifiable.
arr=np.array(np.asarray(img))
r,g,b,a=np.rollaxis(arr,axis=-1)
mask=((r>threshold)
& (g>threshold)
& (b>threshold)
& (np.abs(r-g)<dist)
& (np.abs(r-b)<dist)
& (np.abs(g-b)<dist)
)
arr[mask,3]=0
img=Image.fromarray(arr,mode='RGBA')
img.save('/tmp/out.png')
Le code est facile à modifier de sorte que seule valeur RVB (255,255,255) est activé transparent - si c'est ce que vous voulez vraiment. Il suffit de changer le mask
pour:
mask=((r==255)&(g==255)&(b==255)).T
Questions connexes
- 1. CSS fond blanc ou transparent-couleur pour div sur fond blanc?
- 2. Python Tkinter Label fond transparent
- 3. gd ne pas ajouter de fond blanc à transparent PNG
- 4. Dégradé blanc à transparent avec l'image de fond
- 5. fond passe du blanc au transparent dans ImageMagick
- 6. Fond transparent, texte clair?
- 7. Fond transparent de VerticalFieldManager
- 8. Texte blanc sur fond blanc dans ListFragment en utilisant Theme.Light
- 9. texte d'entrée non transparent sur fond transparent
- 10. Fond de fenêtre transparent (Python Tkinter)
- 11. fond Convertir en RVB jpg soit transparent
- 12. Fond transparent - pas complètement transparent
- 13. Après l'importation d'un fichier PNG avec fond transparent, il apparaît avec un fond blanc
- 14. UIViewAnimationTransitionCurlUp avec fond transparent
- 15. GD: Rendre un fond blanc pour PNG transparent
- 16. Fond de widget transparent?
- 17. mobile safari fond blanc
- 18. sIFR 3: Fond transparent?
- 19. DatePickerTextBox fond blanc sur désactiver
- 20. ProgressBar sur fond blanc
- 21. Fond IE et transparent
- 22. Fond transparent Java Graphics2D
- 23. css fond transparent
- 24. Div fond transparent
- 25. PHP/GD - fond transparent
- 26. Fond transparent sur DIV
- 27. Faire fond transparent à part ticker web
- 28. Fond transparent, éléments opaques
- 29. AChartEngine fond transparent
- 30. Fond transparent Iframe
Je comprends seuil, mais pouvez-vous expliquer le but de la distance ici? – kangax
@kangax: En abaissant le 'dist', vous pouvez vous assurer que vous n'éliminez que les couleurs grisâtres. – unutbu
Ahh ... c'est logique! # 000, # 555, #aaa, ccc, #eee, #fff sont toutes les nuances de gris (distance = 0), donc moins les couleurs sont grises. Merci. – kangax