[英]SVGwrite: exporting to png/jpg with a background color and filling annulus
我一直在使用svgwrite庫編寫一些Python腳本。 我現在想使它以背景色導出圖形,在我看來,我可能必須將其轉換為另一種格式(png或jpg應該可以)。 我對svg格式了解不多,但是我確定它可以處理本機背景色。
另外,我正在繪制兩個共享同一中心的圓,並且我想用一種特定的顏色填充它們之間的空間,就像繪制一個圓環一樣,但是我無法在文檔中找到如何做。
預先感謝您的幫助。
這是用顏色創建圓的示例。 第一個圓圈具有填充顏色和單獨的筆觸顏色,因此它與兩個圓圈相同,頂部較小。 第二個圓具有筆觸顏色,但fill ='none'僅給出了環形形狀。 最后一組圓圈顯示,將一個圓圈與另一個圓圈放在同一位置可以覆蓋下面的內容。 這可能是您想要的瓣環。
import svgwrite
def create_svg(name):
SVG_SIZE = 900
color_list = ["rgb(123, 80, 86)", "rgb(67, 130, 124)", "red"]
dwg = svgwrite.Drawing(name, (SVG_SIZE, SVG_SIZE), debug=True)
# background will be white.
dwg.add(dwg.rect(insert=(0, 0), size=('100%', '100%'), fill='white'))
y = 50
circle_1 = dwg.circle(center=(100, y), r=30, fill='green',
stroke='blue', stroke_width=5)
dwg.add(circle_1)
circle_2 = dwg.circle(center=(200, y), r=30, fill='none',
stroke='blue', stroke_width=5)
dwg.add(circle_2)
y += 300
for i in range(3):
circle_i = dwg.circle(center=(150, y), r=(100 - 30 * i),
fill=color_list[i], stroke='none', stroke_width=0)
dwg.add(circle_i)
dwg.save()
if __name__ == '__main__':
create_svg('filling_annulus.svg')
背景
對於您的背景色,最簡單的解決方案是僅繪制一個填充整個文檔的矩形。
<rect width="100%" height="100%" fill="red" />
還有其他方法可以做到這一點。 SVG 1.2定義了viewport-fill
,但並非所有渲染器都支持。 在大多數瀏覽器中, background-color
可以,但是在非瀏覽器的SVG渲染器上可能不起作用。 僅使用矩形是最簡單的。
環
我假設您的意思是您想在環內有一個透明的孔? 如果是這樣,有兩種方法可以做到。 最直接的方法就是創建一個帶有兩個子路徑的路徑。 一個用於外圈,一個用於內圈。 當兩個子路徑重疊並且fill-rule
屬性設置為evenodd
,它會形成一個洞。
<path d="M -100,0
A 100,100, 0,1,0, 100,0
A 100,100, 0,1,0, -100,0
M -75,0
A 75,75, 0,1,0, 75,0
A 75,75, 0,1,0, -75,0
Z"
stroke="black" fill="orange" fill-rule="evenodd"/>
有關fill-rule
更多信息,請訪問: http : //www.w3.org/TR/SVG/painting.html#FillRuleProperty
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.