İçinde yarı saydam çokgenler çizmek Python Imaging Library kullanarak yarı saydam çokgenler nasıl çizilir?PIL
PIL
cevap
Çokgenleri ayrı bir RGBA görüntüsünde çizebilir ve Image.paste (görüntü, kutu, maske) yöntemini kullanabilir misiniz?
Düzenleme: Bu çalışır.
from PIL import Image
from PIL import ImageDraw
back = Image.new('RGBA', (512,512), (255,0,0,0))
poly = Image.new('RGBA', (512,512))
pdraw = ImageDraw.Draw(poly)
pdraw.polygon([(128,128),(384,384),(128,384),(384,128)],
fill=(255,255,255,127),outline=(255,255,255,255))
back.paste(poly,mask=poly)
back.show()
Ben @Nick T 'ın cevabı iyi olduğunu düşünüyorum, ama özellikle birkaç annotating olabilir durumunda, çok büyük bir arka plan görüntüsü ile yazılı olarak yaptığı kodunu kullanırken dikkatli olmak gerekir söz konusu görüntüdeki çokgenler. Bu, bazı nesne algılama kodlarıyla büyük uydu görüntülerini işlerken ve şeffaf bir dikdörtgen kullanarak algılamalara açıklama eklerken yaptığım bir şey. Arka plan resminin boyutu ne olursa olsun kodu verimli hale getirmek için aşağıdaki öneriyi yaparım.
ben poligonu, arka görüntü olarak değil aynı boyuta tutmak için gerektiği gibi yapıştırmak olacak çokgen görüntü sadece kadar büyük olması belirtmek için çözüm değiştirir. Çokgenin koordinatları, global görüntü koordinatlarına değil, yerel sınırlayıcı kutuya göre belirtilir. Ardından poligon resmini daha büyük arka plan görüntüsünde ofsete yapıştırın.
import Image
import ImageDraw
img_size = (512,512)
poly_size = (256,256)
poly_offset = (128,128) #location in larger image
back = Image.new('RGBA', img_size, (255,0,0,0))
poly = Image.new('RGBA', poly_size)
pdraw = ImageDraw.Draw(poly)
pdraw.polygon([ (0,0), (256,256), (0,256), (256,0)],
fill=(255,255,255,127), outline=(255,255,255,255))
back.paste(poly, poly_offset, mask=poly)
back.show()
Image.paste (resim, kutu, maske) çokgen görüntünün ilgili şeffaflık değeri içine arka plan görüntüsü yapıştırılan alan alfa kanalı dönüştürür metot kullanılarak.
Image.alpha_composite (IM1, IM2) yöntemi "yapıştırılan" görüntünün alfa kanalı kullanır ve arka plan saydam açılmayacaktır. Bununla birlikte, bu yöntemin iki eşit boyutlu görüntüye ihtiyacı vardır.
- 1. PIL
- 2. PIL
- 3. PIL
- 4. PIL
- 5. python: PIL
- 6. PIL şeffaflık
- 7. PILLOW (PIL)
- 8. Python, PIL, kırpma sorunu
- 9. PIL Image ImportError
- 10. PIL kod çözücüsünü genişletme
- 11. piton ve PIL
- 12. InstallShield pil seviyesi uyarısı
- 13. PIL kullanarak boşlukları kırpın
- 14. Python PIL jpeg kalite
- 15. easy_install PIL başarısız oluyor
- 16. Üçgen görüntü bölgesini PIL
- 17. PyQt - PIL görüntüsüne dönüştürme
- 18. Görüntüyü PIL ile nasıl kaydedebilirim?
- 19. PIL Görüntüsünü GTK'ye Dönüştürme Pixbuf
- 20. PIL görüntü nesnesindeki Python kopyası
- 21. Python PIL özniteliği yok 'Image'
- 22. Metin tanıma doğruluğunu pytesseract & PIL
- 23. Pil şarjlarının sayısı nasıl okunur?
- 24. Oluşturmak "Pil kullanımı" niyet Android
- 25. PIL: Bytearray Görüntüsünü Görüntüsüne Dönüştürme
- 26. (((pil şarj etme = 0)/süresi))
- 27. Programatik olarak pil şarjını önler
- 28. Pil simgesinin xib dosyasında kaldırılması
- 29. Pylab rakamını PIL görüntüsüne okunabilen bellek içi dosyaya nasıl kaydedebilirim? PIL için
- 30. Python PIL: PNG'de alan nasıl şeffaflaştırılır?