[object Object]

← back to Dw Collection Banner Audit

5 original settlement-clear banner candidates for logo-only collections (Steve to approve before landing)

9801c11dc6f3de53120a69a23081865192a813ca · 2026-07-30 10:53:08 -0700 · steve

Files touched

Diff

commit 9801c11dc6f3de53120a69a23081865192a813ca
Author: steve <steve@designerwallcoverings.com>
Date:   Thu Jul 30 10:53:08 2026 -0700

    5 original settlement-clear banner candidates for logo-only collections (Steve to approve before landing)
---
 candidates_contact_sheet.png                       | Bin 0 -> 827127 bytes
 gen_candidates.py                                  |  36 +++++++++++++++++++++
 room_renders_candidates/collezione-italia.png      | Bin 0 -> 1895998 bytes
 room_renders_candidates/hermes.png                 | Bin 0 -> 1718607 bytes
 .../paul-montgomery-all-products.png               | Bin 0 -> 1671180 bytes
 room_renders_candidates/paul-montgomery-murals.png | Bin 0 -> 1754469 bytes
 ...illipe-romano-faux-leathers-upholstery-more.png | Bin 0 -> 1829735 bytes
 7 files changed, 36 insertions(+)

diff --git a/candidates_contact_sheet.png b/candidates_contact_sheet.png
new file mode 100644
index 0000000..833821d
Binary files /dev/null and b/candidates_contact_sheet.png differ
diff --git a/gen_candidates.py b/gen_candidates.py
new file mode 100644
index 0000000..c301cfb
--- /dev/null
+++ b/gen_candidates.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+"""Generate 5 ORIGINAL text-to-image room-render candidates (no external image copied)
+for the logo-only collections. Settlement-safe prompts. NOT auto-landed."""
+import json, os, base64, time, urllib.request
+HERE = os.path.dirname(os.path.abspath(__file__))
+GKEY = os.environ["GEMINI_API_KEY"]; MODEL = "gemini-2.5-flash-image"
+OUT = os.path.join(HERE, "room_renders_candidates"); os.makedirs(OUT, exist_ok=True)
+
+BASE = ("Photorealistic luxury interior photograph, wide 16:9 banner composition, natural lighting, "
+        "tasteful furniture, magazine editorial quality, no text, no watermark, no brand logos, no monograms. ")
+PROMPTS = {
+  "paul-montgomery-all-products": BASE + "The main wall features an elegant hand-painted decorative mural in soft muted blues and creams — an abstract architectural landscape scene. NO birds, NO butterflies, NO tropical palm or banana foliage. Refined living room.",
+  "paul-montgomery-murals": BASE + "The main wall is a large hand-painted panoramic mural in gentle sepia and sage tones depicting a serene abstract garden-architecture scene. NO birds, NO butterflies, NO tropical palm or banana leaves. Elegant dining room.",
+  "phillipe-romano-faux-leathers-upholstery-more": BASE + "The main wall is clad in rich embossed faux-leather wallcovering with a subtle pebbled texture in warm cognac tone. Modern room with leather and brushed-brass accents.",
+  "collezione-italia": BASE + "The main wall is an ornate tone-on-tone Italian damask wallcovering in soft champagne and pearl. Opulent Milanese-glamour room with marble and gilt accents.",
+  "hermes": BASE + "The main wall is an understated geometric textured wallcovering in warm neutral taupe. Sophisticated refined room with leather and walnut accents, quiet luxury.",
+}
+
+def gen(handle, prompt):
+    body = json.dumps({"contents": [{"parts": [{"text": prompt}]}],
+                       "generationConfig": {"imageConfig": {"aspectRatio": "16:9"}}}).encode()
+    url = f"https://generativelanguage.googleapis.com/v1beta/models/{MODEL}:generateContent?key={GKEY}"
+    res = json.load(urllib.request.urlopen(urllib.request.Request(url, data=body, headers={"Content-Type": "application/json"}), timeout=120))
+    for part in res["candidates"][0]["content"]["parts"]:
+        d = part.get("inline_data") or part.get("inlineData")
+        if d:
+            out = os.path.join(OUT, f"{handle}.png"); open(out, "wb").write(base64.b64decode(d["data"])); return out
+    return None
+
+for h, p in PROMPTS.items():
+    try:
+        out = gen(h, p); print(f"  {'OK  ' if out else 'FAIL'} {h}")
+    except Exception as e:
+        print(f"  ERR {h}: {str(e)[:90]}")
+    time.sleep(1.2)
+print("candidates in", OUT)
diff --git a/room_renders_candidates/collezione-italia.png b/room_renders_candidates/collezione-italia.png
new file mode 100644
index 0000000..b8b2311
Binary files /dev/null and b/room_renders_candidates/collezione-italia.png differ
diff --git a/room_renders_candidates/hermes.png b/room_renders_candidates/hermes.png
new file mode 100644
index 0000000..4e67e33
Binary files /dev/null and b/room_renders_candidates/hermes.png differ
diff --git a/room_renders_candidates/paul-montgomery-all-products.png b/room_renders_candidates/paul-montgomery-all-products.png
new file mode 100644
index 0000000..3ae551b
Binary files /dev/null and b/room_renders_candidates/paul-montgomery-all-products.png differ
diff --git a/room_renders_candidates/paul-montgomery-murals.png b/room_renders_candidates/paul-montgomery-murals.png
new file mode 100644
index 0000000..4266650
Binary files /dev/null and b/room_renders_candidates/paul-montgomery-murals.png differ
diff --git a/room_renders_candidates/phillipe-romano-faux-leathers-upholstery-more.png b/room_renders_candidates/phillipe-romano-faux-leathers-upholstery-more.png
new file mode 100644
index 0000000..54da4f4
Binary files /dev/null and b/room_renders_candidates/phillipe-romano-faux-leathers-upholstery-more.png differ

← c04b88d created 6 collection 301 redirects via content token (dedup  ·  back to Dw Collection Banner Audit  ·  landed 5 original banners for logo-only collections live; 24 51ba7b2 →