ลองสร้าง PNG พื้นหลังโปร่งใสด้วย GPT Image 2 ใน Codex

aiimage-generationopenai
สารบัญ

OpenAI เผยแพร่ Cookbook เรื่องการสร้างภาพพื้นหลังโปร่งใสด้วย GPT Image 2 เมื่อวันที่ 20 สิงหาคม 2026 ตัวอย่างไม่ได้จบแค่การสร้าง PNG แต่พาไปถึงขั้นตรวจ alpha channel และนำ asset เดิมไปใช้บนพื้นหลังหลายแบบ

ผมนำ workflow ใน Cookbook มาลองกับ Codex subscription โดยเปลี่ยนเฉพาะช่องทางสร้างภาพ จากการเรียก API เป็นการสั่งด้วยภาษาธรรมดา หลังจากได้ไฟล์แล้วจึงตรวจ alpha channel ด้วย Python และ Pillow ตามแนวทางเดิม

1. Workflow ของ Cookbook

Cookbook ยกตัวอย่างการใช้ transparent image asset สี่แบบ:

  • ภาพสินค้าแยกชิ้นสำหรับวางบนหน้าแคมเปญหลายฤดูกาล
  • กราฟ PNG สำหรับวางบน PowerPoint
  • icon, sticker และของตกแต่งสำหรับ design template
  • ลายเสื้อและภาพสินค้าแยกชิ้นสำหรับ print-on-demand

แกนของ workflow มีหกขั้นตอน:

  1. เขียน prompt ให้เป็นวัตถุแยกเดี่ยว ระบุว่าต้องการพื้นหลังโปร่งใสจริง และห้ามมีฉากหรือพื้นหลัง
  2. เรียก Image API ด้วย gpt-image-2
  3. กำหนด background="transparent" และ output_format="png" ใน request
  4. ใช้ Python decode ข้อมูลภาพจาก API แล้วบันทึกเป็น PNG ขั้นตอนนี้เป็นเพียงการบันทึกไฟล์ ไม่ได้ลบหรือแปลงพื้นหลัง
  5. ใช้ Pillow เปิด PNG ที่ได้เพื่อตรวจว่าเป็น RGBA มี alpha channel และมี pixel ที่ alpha 0
  6. นำ PNG เดิมไปวางบนเว็บไซต์ สไลด์ หรือสินค้า โดยไม่ต้องลบพื้นหลังอีกครั้ง

ตัวอย่างการเรียก API มีส่วนสำคัญแบบนี้:

result = client.images.generate(
    model="gpt-image-2",
    prompt=prompt,
    background="transparent",
    size="1536x1024",
    quality="high",
    output_format="png",
)

image_bytes = base64.b64decode(result.data[0].b64_json)
Path("asset.png").write_bytes(image_bytes)

ความโปร่งใสมาจาก PNG ที่ GPT Image 2 สร้างโดยตรง Python มีหน้าที่ decode response เพื่อบันทึกไฟล์ ส่วน Pillow ใช้ตรวจ mode และนับสัดส่วน pixel ที่โปร่งใสเต็มที่ ไม่ได้ใช้สร้าง alpha channel หรือลบพื้นหลังภายหลัง

ในตัวอย่าง print-on-demand Cookbook ใช้ Pillow เพิ่มเติมเพื่อตัดขอบโปร่งใสและประกอบภาพลง mockup แต่ไม่ได้เปลี่ยนไฟล์ต้นฉบับให้โปร่งใส

ในตัวอย่างร้านค้าตามฤดูกาลและ PowerPoint ทาง OpenAI ใช้ Codex หลังจาก API สร้างและตรวจ PNG แล้ว เพื่อประกอบ asset เป็นเว็บไซต์หรือสไลด์

2. ทดลองกับ Codex subscription

OpenAI Docs ระบุว่า built-in image generation ของ Codex ใช้ gpt-image-2 ผู้ใช้ไม่ต้องพิมพ์ API parameter แต่บอกภาพที่ต้องการด้วย natural language ได้

การสร้างภาพใช้ได้กับ ChatGPT Plus, Pro, Business, Enterprise และ Edu ตามสิทธิ์และโควตาของแต่ละ plan รวมถึงใช้งานด้วย API key ส่วน Free plan ยังใช้ image generation ไม่ได้

สำหรับ Codex การสร้างภาพนับรวม general usage limits และใช้โควตาเร็วขึ้นเฉลี่ย 3-5 เท่าเมื่อเทียบกับ turn ใกล้เคียงที่ไม่ได้สร้างภาพ โดยขึ้นกับขนาดและคุณภาพ ถ้าใช้ API key จะคิดตาม API pricing แทนโควตาที่รวมใน ChatGPT plan

Prompt ที่ใช้

ผมไม่ได้พิมพ์ background="transparent" เพราะค่านี้เป็น parameter ของ API แต่ระบุผลลัพธ์ที่ต้องการและข้อห้ามไว้ใน prompt โดยตรง

ช่วยสร้างภาพ PNG ของนกกระดาษพับสีน้ำเงินหนึ่งตัวสำหรับใช้เป็น asset บนเว็บไซต์ จัดวางวัตถุไว้กลางภาพและเห็นครบทั้งตัว ขอพื้นหลังโปร่งใสจริงที่มี alpha channel ไม่มีพื้นหลังสีขาว ไม่มีลายตาราง ไม่มีพื้นหรือแท่น ไม่มีเงาตกพื้น ไม่มีข้อความ โลโก้ หรือลายน้ำ

เอกสารทางการรองรับ natural-language prompting ทั้ง ChatGPT และ Codex แต่การทดลองครั้งนี้ทำกับ Codex built-in image generation เท่านั้น ผมไม่ได้ทดสอบ ChatGPT

ไฟล์ที่ได้

Codex ส่งกลับไฟล์ PNG ขนาด 1536 x 1024 pixels

นกกระดาษพับสีน้ำเงินบน checkerboard สำหรับตรวจพื้นหลังโปร่งใส

ภาพด้านบนเป็น checkerboard proof ที่สร้างจากไฟล์ต้นฉบับเพื่อให้มองเห็นพื้นที่โปร่งใส ลายตารางไม่ได้อยู่ในภาพต้นฉบับ

ไฟล์ PNG ต้นฉบับของนกกระดาษพับสีน้ำเงินที่มี alpha channel

ตรวจไฟล์ด้วย Python และ Pillow

หลังจาก Codex สร้าง PNG โปร่งใสมาแล้ว ผมใช้ Pillow ตรวจไฟล์ต้นฉบับและอ่าน alpha histogram ไม่มีขั้นตอนแปลงภาพหรือลบพื้นหลัง จากนั้นเพิ่มการนับ partial alpha, opaque pixel, alpha สูงสุด และค่าที่มุมทั้งสี่

ติดตั้ง Pillow ก่อนรัน:

python -m pip install pillow
from pathlib import Path
from PIL import Image

image_path = Path("blue-origami-bird-transparent.png")

with Image.open(image_path) as image:
    has_alpha = "A" in image.getbands()
    if not has_alpha:
        raise ValueError("PNG does not have an alpha channel")

    alpha = image.getchannel("A")
    histogram = alpha.histogram()
    total = image.width * image.height

    fully_transparent = histogram[0]
    partial_alpha = sum(histogram[1:255])
    opaque = histogram[255]
    max_alpha = max(value for value, count in enumerate(histogram) if count)
    corners = [
        alpha.getpixel((0, 0)),
        alpha.getpixel((image.width - 1, 0)),
        alpha.getpixel((0, image.height - 1)),
        alpha.getpixel((image.width - 1, image.height - 1)),
    ]

    print(f"size: {image.width}x{image.height}")
    print(f"mode: {image.mode}")
    print(f"hasAlpha: {'yes' if has_alpha else 'no'}")
    print(f"fully transparent: {fully_transparent:,} ({fully_transparent / total:.2%})")
    print(f"partial alpha: {partial_alpha:,} ({partial_alpha / total:.2%})")
    print(f"opaque: {opaque:,}")
    print(f"max alpha: {max_alpha}")
    print(f"corner alpha: {corners}")

ผลที่ได้:

size: 1536x1024
mode: RGBA
hasAlpha: yes
fully transparent: 1,198,002 (76.17%)
partial alpha: 374,862 (23.83%)
opaque: 0
max alpha: 254
corner alpha: [0, 0, 0, 0]

ไฟล์นี้มี alpha channel และมีพื้นที่โปร่งใสจริง ไม่ใช่พื้นขาวหรือลายตารางที่ฝังอยู่ในภาพ แต่ผลนี้มาจากการทดลองเพียงหนึ่งครั้ง ไม่ได้รับประกันว่าทุก prompt จะได้ผลเหมือนกัน

3. ความเห็นส่วนตัว

การทดลองครั้งนี้คือการนำ workflow ของ Cookbook มาใช้กับ Codex subscription โดยเปลี่ยนเฉพาะวิธีสร้างภาพ ส่วนขั้นตอนตรวจไฟล์ยังใช้ Python และ Pillow เหมือนเดิม

ขั้นตอนตรวจโครงสร้างไฟล์เป็นส่วนที่สำคัญ เพราะช่วยยืนยันว่า PNG มี alpha channel และพื้นที่โปร่งใสจริงก่อนนำ asset ไปใช้ต่อ

ความต่างระหว่างแต่ละช่องทางอยู่ที่วิธีสั่งสร้างภาพ:

  • API ระบุ background="transparent", output_format, size และ quality ใน request ได้โดยตรง เหมาะกับงานที่ต้องทำซ้ำ สร้างหลายภาพ หรือเชื่อมกับ pipeline
  • Codex ที่ใช้ผ่าน ChatGPT subscription และ ChatGPT web ให้ผู้ใช้บอกความต้องการด้วยภาษาธรรมดา จึงควรระบุให้ชัดว่าต้องการ alpha channel และไม่ต้องการพื้นขาว ลายตาราง พื้น เงา หรือฉากหลัง
  • ไม่ว่าจะสร้างผ่านช่องทางไหน ควรเปิดไฟล์ด้วย Pillow หรือเครื่องมือตรวจภาพอีกครั้ง เพราะนามสกุล PNG และภาพ preview ยังยืนยัน transparency ไม่ได้

ข้อสังเกตจากไฟล์ครั้งนี้คือ alpha สูงสุดอยู่ที่ 254 และไม่มี pixel ที่ alpha 255 ภาพนกดูทึบในทางสายตา แต่ข้อมูลในไฟล์ไม่มีส่วนที่ทึบเต็ม 100% ก่อนใช้ใน production จึงควรวางภาพบนทั้งพื้นอ่อนและพื้นเข้มเพื่อตรวจขอบวัตถุด้วย

เอกสาร API ระบุว่า transparent background ของ gpt-image-2 ยังเป็น preview และ prompt ที่ขอฉากหรือสีพื้นอาจขัดกับ background="transparent" ได้ ผลลัพธ์จากครั้งนี้จึงเป็นหลักฐานของไฟล์หนึ่งไฟล์ ไม่ใช่คำรับประกันของทุก prompt

อ้างอิง


ติดตามบน YouTube

บทความทั้งหมด · RSS