ポップでいい感じの背景画像(svg)を作るプログラム
Googleの最新画像生成AI、ImageFXでいい感じのポップな背景画像(jpg)を作らせました
pc wall paper background, 16:9, 2d, flatdesign, no shadow, background color: white, primary color: blue, secondary color: skyblue, stripe, pop, long circle, shapes

Webサイトの背景に用いたいので、jpgよりsvgで欲しい。
この画像をそのままChatGPTに投げて、こんな感じの青い棒と丸を描画してsvgで出力するプログラムを書いてもらいました。
import svgwrite
import random
import math
WIDTH = 1024
HEIGHT = 512
NUM_LINES = 30
NUM_CIRCLES = 10
NUM_CROSSES = 6
NUM_DOTTED = 4
# カラーパレット(青系)
colors = ['#4fc3f7', '#039be5', '#81d4fa', '#29b6f6', '#0288d1']
def random_color():
return random.choice(colors)
def generate_line(dwg, angle_deg):
x1 = random.randint(-200, WIDTH)
y1 = random.randint(0, HEIGHT)
length = random.randint(80, 300)
rad = math.radians(angle_deg)
x2 = x1 + length * math.cos(rad)
y2 = y1 + length * math.sin(rad)
thickness = random.randint(6, 14)
color = random_color()
dwg.add(dwg.line(
start=(x1, y1),
end=(x2, y2),
stroke=color,
stroke_width=thickness,
stroke_linecap="round"
))
def add_circle(dwg):
r = random.randint(8, 25)
x = random.randint(r, WIDTH - r)
y = random.randint(r, HEIGHT - r)
color = random_color()
dwg.add(dwg.circle(center=(x, y), r=r, fill=color))
def add_cross(dwg):
x = random.randint(20, WIDTH - 20)
y = random.randint(20, HEIGHT - 20)
size = random.randint(8, 16)
color = random_color()
angle = random.uniform(0, 360)
g = dwg.g(transform=f"rotate({angle},{x},{y})", stroke=color, stroke_width=2)
g.add(dwg.line((x - size, y), (x + size, y)))
g.add(dwg.line((x, y - size), (x, y + size)))
dwg.add(g)
def add_dotted_circle(dwg):
x = random.randint(50, WIDTH - 50)
y = random.randint(50, HEIGHT - 50)
r = random.randint(18, 30)
dot_r = 1.5
num_dots = 24
color = random_color()
for i in range(num_dots):
angle = 2 * math.pi * i / num_dots
dx = r * math.cos(angle)
dy = r * math.sin(angle)
dwg.add(dwg.circle(center=(x + dx, y + dy), r=dot_r, fill=color))
def generate_svg(filename="structured_background.svg"):
dwg = svgwrite.Drawing(filename, size=(WIDTH, HEIGHT), profile='tiny')
# ほとんどの線は 15度
normal_lines = NUM_LINES - 3
for _ in range(normal_lines):
generate_line(dwg, angle_deg=345)
# 一部だけランダムな角度
for _ in range(3):
generate_line(dwg, angle_deg=random.uniform(0, 180))
# その他の要素
for _ in range(NUM_CIRCLES):
add_circle(dwg)
for _ in range(NUM_CROSSES):
add_cross(dwg)
for _ in range(NUM_DOTTED):
add_dotted_circle(dwg)
dwg.save()
generate_svg()
プログラムで生成した画像はこんな感じです。結構いい感じじゃないですか??

WordPressでsvgをアップロードすると怒られるのでjpgに変換しています。svgでは11 kBでした。
最近のコメント