星のベクター画像を作成する
星のベクター画像を作成します。
ドットの集合である普通の画像(ラスター画像)と異なり、ベクター画像は線や円といったオブジェクトの集合として記述されており、拡大縮小してもギザギザになったりせず画像の質が変わらない特徴があります。
ベクターファイルの生成にはライブラリsvgwriteを用います。このライブラリを使うことでベクター画像の一種であるsvgファイルが生成できます。
関連記事
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
- svgwrite 1.4
コード
多角形を描画するdwg.polygonに、点のx,y座標のリスト、塗りつぶし色、回転変形の角度を与えて星を描画しています。
import numpy as np import svgwrite dwg = svgwrite.Drawing('star.svg', profile='tiny') x = 30 # 中心位置x y = 30 # 中心位置y r = 10 # 中心から頂点の距離 theta = 30 # 回転角度 ratio = 0.3 # 頂点とへこみの比 color = 'darkblue' # 色 peak = r valley = r * ratio rotate = 'rotate('+ str(theta)+' '+str(x)+' '+str(x)+')' points = [] for i in range (0, 360, 72): angle = i / 360 * np.pi * 2 peak_x = x + peak * np.sin(angle) peak_y = y - peak * np.cos(angle) points.append([peak_x, peak_y]) angle = (36 + i) / 360 * np.pi * 2 valley_x = x + valley * np.sin(angle) valley_y = y - valley * np.cos(angle) points.append([valley_x, valley_y]) dwg.add(dwg.polygon(points=points, fill=color, transform=rotate)) dwg.save()
実行結果
生成した'star.svg'をベクター画像描画フリーソフトInkscapeで開きます(ブラウザでも開けます)。星が作成できています。
ベクター画像なので拡大してもエッジがギザギザになりません。
以下のサイトを参考にさせていただきました
pythonfix BETA > svgwrite code examples
svgwrite module