Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

青海波のベクター画像を作成する

日本の伝統的な文様である青海波のベクター画像を作成します。
ドットの集合である普通の画像(ラスター画像)と異なり、ベクター画像は線や円といったオブジェクトの集合として記述されており、拡大縮小してもギザギザになったりせず画像の質が変わらない特徴があります。
ベクターファイルの生成にはライブラリsvgwriteを用います。このライブラリを使うことでベクター画像の一種であるsvgファイルが生成できます。

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • svgwrite 1.4
コード
import svgwrite

dwg = svgwrite.Drawing('seigaiha.svg', profile='tiny')

def seigaiha(x, y):
    for i in range(6, 1, -2):
        dwg.add(dwg.circle(center=(x, y),r=i,fill='indianred'))
        dwg.add(dwg.circle(center=(x, y),r=i-1,fill='wheat'))

for k in range(10):
    for j in range(10):    
        seigaiha(j*12, k*6)
    for j in range(10):    
        seigaiha(j*12+6, (k*6+3))
    
dwg.save()
実行結果

生成した'seigaiha.svg'をベクター画像描画フリーソフトInkscapeで開きます(ブラウザでも開けます)。青海波文様が生成できました。
f:id:T_A_T:20200511205239p:plain

ベクター画像なので拡大してもエッジがギザギザになりません。
f:id:T_A_T:20200511205354p:plain

以下のサイトを参考にさせていただきました

pythonfix BETA > svgwrite code examples
svgwrite module

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村