commit 01515b5ed2ce9e59dc4a3fd9221a04b0206ca5fb Author: Claude Date: Sat Nov 14 07:20:53 2026 +0900 LOG506 のサムネイルを、ブラウザの窓の PC の画面とスマホの画面を並べる形に替えた(ブラウザ版だと分かるように)。sim_thumbs に browser_frames を足す Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LevEXU3Z3M9LXKJxzqN9Ew diff --git a/tools/sim_thumbs/make.py b/tools/sim_thumbs/make.py index 185890f..d99258c 100644 --- a/tools/sim_thumbs/make.py +++ b/tools/sim_thumbs/make.py @@ -182,9 +182,29 @@ def stills_cols(n, ss, bg=LIGHT): save(c, n) +def browser_frames(n, pc, sp, bg=LIGHT): + """ブラウザ版(LOG506〜):ブラウザの窓に PC の画面、手前にスマホの画面を重ね、ブラウザで触れる試作だと分かるようにする。文字は画面の中のものだけ""" + from PIL import ImageDraw + c = Image.new('RGB', (W, H), bg); d = ImageDraw.Draw(c) + a = Image.open(D + pc + '.jpg').convert('RGB') + ww = 1380; wh = int(ww * a.size[1] / a.size[0]); bar = 46; x0, y0 = 50, (H - wh - bar) // 2 - 20 + d.rounded_rectangle((x0 - 2, y0 - 2, x0 + ww + 2, y0 + bar + wh + 2), 16, fill=(200, 203, 210)) + d.rounded_rectangle((x0, y0, x0 + ww, y0 + bar + wh), 14, fill=(226, 228, 233)) + for i, col in enumerate([(236, 106, 94), (244, 191, 79), (98, 197, 84)]): + d.ellipse((x0 + 22 + i * 26, y0 + 16, x0 + 36 + i * 26, y0 + 30), fill=col) + d.rounded_rectangle((x0 + 120, y0 + 10, x0 + ww - 120, y0 + 36), 8, fill=(248, 249, 251)) + c.paste(a.resize((ww, wh), Image.LANCZOS), (x0, y0 + bar)) + b = Image.open(D + sp + '.jpg').convert('RGB') + ph = 860; pw = int(ph * b.size[0] / b.size[1]); bz = 16; px = W - pw - 2 * bz - 40; py = (H - ph) // 2 + 30 + d.rounded_rectangle((px, py - bz, px + pw + 2 * bz, py + ph + bz), 56, fill=INK) + m = Image.new('L', (pw, ph), 0); ImageDraw.Draw(m).rounded_rectangle((0, 0, pw - 1, ph - 1), 42, fill=255) + c.paste(b.resize((pw, ph), Image.LANCZOS), (px + bz, py), m) + save(np.array(c), n) + + # ---- 各回(素材名, 店の範囲の中の中心 x, y, 切り出し幅の割合) JOBS = { - 506: lambda n: mosaic(n, ('browser506_store3_right', .44, .5, .62), ('browser506_store0_left', .52, .5, .62), ('browser506_store2_right', .49, .53, .55)), # ブラウザ版の試作を作った回。three.js で描いたブラウザの画面(Unity の絵ではない)。左の大=③ 効率重視・入口が角の混んでいる時(ロボット2台・右30°)、右上=⓪の店(左30°)、右下=②の店(右30°) + 506: lambda n: browser_frames(n, 'browser506_pc', 'browser506_sp'), # ブラウザ版の試作を作った回。three.js で描いたブラウザ版の画面(Unity の絵ではない)。ブラウザの窓に PC の画面(③ 効率重視・入口が角、ロボット2台・混んでいる)、右手前にスマホの画面 503: lambda n: stills_cols(n, [('closeup503_glance', .5, .55, .36), ('closeup503_stumble', .47, .5, .42), ('closeup503_smile', .5, .5, .5)]), # 廊下ですれ違う場面を作った回(依頼175)。左=ちらっとハコブくんを見る看護師(顔の寄り)、中=よろける看護師と手前で止まるハコブくん(本番のカメラ)、右=画面がにっこりするハコブくん(画面の寄り) 499: lambda n: stills_split(n, ('closeup499_card_side', .52, .40, .50), ('closeup499_take_side', .60, .45, .45), r=.5), # 受け渡しの場面を直した回(依頼171)。左=ハコブくんの画面にカードをかざす看護師(横から)、右=開いた引き出しに上から手を入れて取る所(横から) 496: lambda n: still(n, 'closeup496_drawer', .47, .5, .9), # ハコブくんと看護師の3Dを作った回。Blender で描いた、引き出しの前でかがむ看護師(LOG496 の scene_render.py。Unity の絵ではない)