如何使用Python Imaging Library繪製半透明多邊形?在PIL中繪製半透明多邊形
11
A
回答
14
您可以在單獨的RGBA圖像上繪製多邊形,然後使用Image.paste(圖像,框,蒙版)方法嗎? :
編輯:This Works。
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()
4
我覺得@Nick T的回答是不錯的,但你需要使用作爲寫有一個非常大的背景圖片他的代碼的時候,尤其是在你可能會被標註數的情況下要小心在所述圖像上的多邊形。這是我在處理大量衛星圖像時使用一些對象檢測代碼並使用透明矩形標註檢測結果時所做的事情。爲了使代碼高效,不管背景圖像的大小如何,我提出以下建議。
我會修改解決方案,指定您要粘貼的多邊形圖像的大小隻有保留多邊形所需的大小,與後面的圖像大小不一樣。多邊形的座標是相對於局部邊界框指定的,而不是全局圖像座標。然後,將多邊形圖像粘貼到較大背景圖像的偏移處。
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()
1
使用Image.paste(圖像,框,掩模)方法獲得轉換的alpha通道在背景圖像的粘貼區域到多邊形圖像的對應透明度值。
The Image.alpha_composite(im1,im2)方法利用「粘貼」圖像的alpha通道,並且不會將背景變爲透明。但是,這種方法再次需要兩張尺寸相同的圖像。
相關問題
- 1. 繪製半透明可繪製在Android中,但黑邊
- 2. 在Android上的半透明形狀上繪製頂部邊框
- 3. 繪製半透明的矩形wxWidgets的
- 4. 如何在openGL中繪製透明多邊形
- 5. 如何在OpenGL-ES 2.0中繪製透明多邊形?
- 6. 在wxwidgets中繪製半透明窗口
- 7. 帶半透明(半透明)帶的繪製路徑
- 8. 在iTextSharp中使用半透明填充繪製形狀4.1.6.0
- 9. 如何在Qt中繪製半透明的矩形?
- 10. 如何用Python繪製透明多邊形?
- 11. 如何在圖形對象上繪製半透明文本?
- 12. 如何在靜態文本上繪製半透明的矩形?
- 13. 是否可以在GL11四邊形中繪製透明框?
- 14. 如何繪製半透明白線?
- 15. 如何繪製半透明的NSTableRowView?
- 16. 用半透明視圖繪製陰影
- 17. 用ImageMagick繪製半透明線條
- 18. 繪製多邊形過頂在Python枕頭/ PIL彼此
- 19. UIButton半透明邊框
- 20. 半透明的JFrame邊境
- 21. 繪製多邊形
- 22. 繪製多邊形
- 23. 繪製多邊形
- 24. SDL:繪製一個半透明的矩形
- 25. 繪製不重疊的半透明形狀
- 26. 多邊形填充是不是半透明的android地圖v2
- 27. 如何在PIL中的透明圖像上繪製unicode字符
- 28. 如何繪製像使用CGContextClearRect繪製透明矩形的透明圓形
- 29. 在畫布上繪製透明形狀
- 30. jogl中的透明多邊形