اے آئی اور خود کاری

GPT-Image-2 کا اصل شفاف PNG بنائیں، checkerboard تصویر نہیں

|مصنف: QUASA ادارتی ٹیم|6 منٹ مطالعہ| 1
GPT-Image-2 کا اصل شفاف PNG بنائیں، checkerboard تصویر نہیں

GPT-Image-2 API سے حقیقی شفاف PNG بنانے کے لیے prompt پر اکتفا نہ کریں: درخواست میں background="transparent" اور output_format="png" دیں، Base64 output کو PNG bytes کے طور پر محفوظ کریں اور پھر alpha channel میں واقعی شفاف pixels کی تصدیق کریں۔

Checkerboard صرف تب transparency کی علامت ہے جب اسے viewer پیچھے دکھا رہا ہو۔ اگر سیاہ اور سفید خانے خود فائل کے RGB pixels میں شامل ہیں تو نتیجہ ایک عام مستطیل تصویر ہے؛ اسی لیے درست workflow درخواست، فائل فارمیٹ، alpha values اور باریک کناروں کو الگ الگ جانچتا ہے۔

کم سے کم درست API درخواست

GPT-Image-2 کی درخواست سے الگ تھلگ شفاف ceramic mug PNG حاصل ہونے کا عمل

OpenAI کی transparent-assets cookbook میں GPT-Image-2 کے ساتھ background="transparent" اور output_format="png" استعمال ہوتے ہیں۔ وہ یہ بھی واضح کرتی ہے کہ prompt میں backdrop، scene یا background color مانگا جائے تو یہ ہدایت transparency پر ترجیح پا سکتی ہے، اس لیے subject کو الگ تھلگ بیان کریں۔

Python درخواست: from openai import OpenAI; import base64; client = OpenAI(); result = client.images.generate(model="gpt-image-2", prompt="One ceramic coffee mug, fully visible and isolated; keep all space outside the object actually transparent; no backdrop, floor, cast shadow, frame, or checkerboard pattern.", background="transparent", output_format="png"); image_bytes = base64.b64decode(result.data[0].b64_json); open("mug.png", "wb").write(image_bytes)

یہ code encoded output کو decode کرکے کسی درمیانی تصویری conversion کے بغیر محفوظ کرتا ہے۔ عملی نظام میں SDK exception، خالی data array اور خراب Base64 کو الگ handle کریں؛ کامیاب API response صرف یہ بتاتا ہے کہ فائل ملی ہے، یہ نہیں کہ اس کے ہر مطلوبہ حصے میں transparency درست ہے۔

PNG یا WebP منتخب کریں، JPEG نہیں

OpenAI کی image-generation guide کے مطابق GPT-Image-2 میں transparent background فی الحال preview ہے، اسے background="transparent" سے مانگا جاتا ہے، اور شفاف output کے لیے PNG یا WebP استعمال ہو سکتا ہے؛ JPEG اس حالت میں supported نہیں۔ اسی guide کے مطابق Images API تصویر کا data Base64 میں لوٹاتی ہے۔

PNG اس workflow کے لیے سیدھا انتخاب ہے، خاص طور پر ان product cutouts، شیشے، بالوں اور نرم کناروں کے لیے جن میں نیم شفاف pixels محفوظ رکھنے ہوں۔ WebP تب مناسب ہے جب پوری downstream pipeline اسے قبول کرتی ہو؛ صرف فائل کا نام mug.png سے mug.webp یا mug.jpg کر دینا format conversion نہیں کرتا۔

CDN، optimizer یا CMS آخری فائل کو دوبارہ encode کر سکتا ہے۔ اس لیے صرف API سے نکلی فائل نہیں بلکہ صارف تک پہنچنے والا asset بھی کھولیں اور اس کا format اور alpha دوبارہ جانچیں؛ RGB یا JPEG conversion transparency کو flatten کر دے گا۔

Alpha channel کو code سے ثابت کریں

اصل PNG کے alpha pixels اور baked checkerboard والی ناکام فائل کا تقابل

صرف mode کا نام دیکھنا کافی نہیں۔ Pillow کی Image documentation میں getchannel("A") سے alpha band نکالنے اور getextrema() سے اس کی کم اور زیادہ pixel values پڑھنے کا طریقہ درج ہے؛ documentation یہ بھی بتاتی ہے کہ transparency data رکھنے والی فائل تمام values opaque ہونے پر پھر بھی ٹھوس دکھائی دے سکتی ہے۔

قابلِ نقل جانچ: from PIL import Image; im = Image.open("mug.png"); assert "A" in im.getbands(), "No alpha channel"; alpha = im.getchannel("A"); alpha_min, alpha_max = alpha.getextrema(); assert alpha_min < 255, "No transparent pixels"; assert alpha_max > 0, "Image is entirely transparent"; counts = alpha.histogram(); print(im.format, im.mode, alpha_min, alpha_max, counts[0], sum(counts[1:255]), counts[255])

اس جانچ میں alpha_min کا 255 سے کم ہونا ثابت کرتا ہے کہ کم از کم کچھ pixels مکمل opacity سے نیچے ہیں، جبکہ histogram کا counts[0] مکمل شفاف pixels شمار کرتا ہے۔ اگر acceptance rule واقعی خالی بیرونی جگہ چاہتا ہے تو counts[0] > 0 بھی assert کریں؛ محض نیم شفاف pixels ہر استعمال کے لیے کافی نہیں ہوتے۔

RGB فائل کو پہلے RGBA میں تبدیل کرکے پھر صرف A channel کی موجودگی نہ جانچیں۔ ایسی conversion نیا alpha band بنا سکتی ہے جس کی ہر value 255 ہو، لہٰذا channel تو موجود ہوگا مگر تصویر میں ایک بھی شفاف pixel نہیں ہوگا۔ پہلے اصل فائل کے bands دیکھیں، پھر ضرورت ہو تو analysis کے لیے RGBA conversion کریں۔

Prompt کو transparency سے مت ٹکرائیں

“Put the product on a white background and make the background transparent” متضاد ہدایت ہے: پہلی شق سفید backdrop بنواتی ہے اور دوسری اسے غائب کرنے کا مطالبہ کرتی ہے۔ “On a desk”، “blue gradient behind it”، “studio wall” اور “checkerboard background” بھی حقیقی alpha کے بجائے مکمل rectangular scene پیدا کر سکتے ہیں۔

Prompt میں subject، framing اور محفوظ رہنے والی تفصیل بیان کریں، پھر subject کے باہر کی جگہ کے لیے actual transparent alpha مانگیں۔ مثال: “One pair of eyeglasses, fully visible and isolated; preserve translucent lenses and thin frame edges; all surrounding space actually transparent; no surface, backdrop, cast shadow, border, or checkerboard.”

Checkerboard کو output کے اندر مانگنے کے بجائے صرف viewer یا QA canvas میں لگائیں۔ اگر asset میں قدرتی نرم سایہ مطلوب ہے تو اسے واضح طور پر نیم شفاف جزو کہیں؛ “no shadow” اور “soft transparent shadow” دونوں ایک ساتھ نہ لکھیں۔

Halo اور باریک کناروں کی جانچ

سفید، سیاہ اور نمایاں پس منظروں پر cutout کے صاف کنارے اور halo کی جانچ

Alpha موجود ہونے کے باوجود edge pixels کسی سفید، سیاہ یا سرمئی matte کے رنگ سے آلودہ ہو سکتے ہیں۔ ایک checkerboard preview ایسی fringe چھپا سکتا ہے، اس لیے اسی cutout کو سفید، سیاہ اور ایک نمایاں ٹھوس رنگ پر الگ الگ composite کریں۔

سفید اور سیاہ پس منظر: from PIL import Image; fg = Image.open("mug.png").convert("RGBA"); white = Image.new("RGBA", fg.size, (255,255,255,255)); black = Image.new("RGBA", fg.size, (0,0,0,255)); Image.alpha_composite(white, fg).convert("RGB").save("qa-white.jpg"); Image.alpha_composite(black, fg).convert("RGB").save("qa-black.jpg")

سفید canvas پر سیاہ rim، سیاہ canvas پر سفید rim، subject کے گرد مسلسل سرمئی لکیر، یا بالوں، شیشے اور باریک fibers کا کٹا ہوا کنارہ failure کی علامت ہے۔ ساتھ ہی alpha histogram دیکھیں: مکمل شفاف بیرونی pixels، ٹھوس اندرونی حصہ اور ضرورت کے مطابق نیم شفاف edge pixels ایک دوسرے سے الگ ہونے چاہییں۔

ہر alpha value کو فوراً صفر یا 255 پر threshold کرنا محفوظ عمومی علاج نہیں۔ اس سے شیشہ، دھواں، نرم سایہ اور anti-aliased curves خراب ہو سکتے ہیں؛ normalization صرف اس asset class میں کریں جہاں سخت cutout مطلوب ہو، اور اصل generated PNG محفوظ رکھیں۔

Production کے لیے ایک ترتیب

  1. Prompt سے backdrop، surface color، scene اور checkerboard کی ہدایات نکالیں؛ subject کے باہر actual transparent alpha مانگیں۔
  2. درخواست میں model="gpt-image-2"، background="transparent" اور output_format="png" مقرر کریں۔
  3. Base64 bytes کو براہ راست .png میں لکھیں؛ درمیان میں RGB یا JPEG conversion نہ کریں۔
  4. اصل فائل میں A band، alpha extrema، مکمل شفاف pixels اور مکمل opaque pixels جانچیں۔
  5. Asset کو سفید، سیاہ اور نمایاں رنگ پر composite کرکے fringe، halo اور کٹے ہوئے باریک کنارے دیکھیں۔
  6. CDN، optimizer یا CMS سے نکلنے والی آخری فائل پر یہی automated checks دوبارہ چلائیں۔

اس ترتیب میں checkerboard صرف display aid رہتا ہے، acceptance test نہیں۔ اصل معیار یہ ہے کہ delivered PNG میں قابلِ پیمائش alpha موجود ہو اور وہ مختلف پس منظروں پر صاف کناروں کے ساتھ دوبارہ استعمال ہو سکے۔

یہ بھی پڑھیں:

شیئر کریں:

ہمارا نیوز لیٹر سبسکرائب کریں

ویب 3، AI اور کرپٹو کی تازہ خبریں براہ راست اپنے اِن باکس میں پائیں۔

0