ポップでいい感じの背景画像(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でした。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です