AI を使ってアイコンを制作できるか試した。 「助けを借りて」というより「おんぶにだっこ」に近い。 ともかく、 完成したアイコンセット、形式は SVGです。
まずつくりたいアイコンのスタイルを持ったアイコンセットを用意します。 それを input-icon-set.png に保存します。 これを参照イメージとして使います。 あとは gtp-image-1 モデルを使って image to image するだけです。
次のコードを実行:
// main.py
import base64
import os
from openai import OpenAI
from PIL import Image
from io import BytesIO
client = OpenAI()
my_prompt = """
Using uploaded this image, create some pictogram icons next labels: Unprocessed, Not Started, Available, Unavailable, Processing, In Progress, Cancel, Paid Cancellation, Free Cancellation, Completed, Handled, In Stock, Place Order.
"""
img_path_edit = "imgs/result_icons_0.png"
input_img = open("input-icon-set.png", "rb")
result_edit = client.images.edit(
model="gpt-image-1",
image=input_img,
prompt=my_prompt,
size="1024x1024"
)
image_base64 = result_edit.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
image = Image.open(BytesIO(image_bytes))
image.save("result.png", format="PNG", quality=100, optimize=True)
コードを実行するための事前準備や詳細は https://platform.openai.com/docs/guides/tools-image-generation このあたりをご覧ください。
生成したアイコンセット画像を Claude Sonnet 4 (Github Coplitを使用)にSVGへ変換してもらうように頼みました。
プロンプト:
Can you convert this image to svg?
想像はしていましたが、いまいちな出来です。(すごいはすごいんですが・・・)
4o-mini に ask してみたら、SVG にするなら potrace 使え、って言われた。
$ convert input-icon-set.png -threshold 50% pbm:- | potrace -s -o icons.svg
convert は imagemagick のコマンドのひとつで potrace は potrace です・・・この辺でいろいろ試しました。
これでできた icons.svg が冒頭の画像です。
アイコンデザインは使う場所にあった内容とスタイルにしないといけない。 つくりたいスタイルをもった参照画像を用意できれば、 あとはテキストプロンプトでつくりだしたいアイコンの内容を指示できる。