> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bettertoken.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GPT Image में 1K, 2K, 4K, Quality और Mask का उपयोग कैसे करें: BetterToken की परीक्षण मार्गदर्शिका

> GPT Image की वास्तविक छवि के आकार, गुणवत्ता, मास्क संपादन, रूटिंग, देखे गए परिणामों और सीमाओं तथा BetterToken की कीमतों पर परीक्षण-आधारित मार्गदर्शिका।

export const GptImageComparison = ({kind, labels, caption, label}) => {
  const comparisonPanels = {
    crops: [["comparison-crop-1k.png", 480, 480], ["comparison-crop-2k.png", 480, 480], ["comparison-crop-4k.png", 480, 480]],
    mask: [["comparison-mask-original.png", 476, 476], ["comparison-mask-overlay.png", 476, 476], ["comparison-mask-result.png", 476, 476]],
    boundary: [["comparison-boundary-original.png", 576, 256], ["comparison-boundary-result.png", 576, 256]],
    circles: [["comparison-circles-original.png", 416, 416], ["comparison-circles-overlay.png", 416, 416], ["comparison-circles-result.png", 416, 416]]
  };
  const panels = comparisonPanels[kind];
  return <div className="bt-image-comparison not-prose">
      <div className="bt-image-comparison-scroll" role="region" aria-label={label} tabIndex={0}>
        <div className="bt-image-comparison-grid" style={{
    gridTemplateColumns: `repeat(${panels.length}, minmax(0, 1fr))`,
    '--bt-comparison-min-width': `${panels.length * 176 + (panels.length - 1) * 16}px`
  }}>
          {labels.map((title, index) => <p className="bt-image-comparison-title" key={`title-${index}`}>{title}</p>)}
          {panels.map(([file, width, height], index) => <a key={file} href={`/images/gpt-image-guide/${file}`} target="_blank" rel="noreferrer">
              <img src={`/images/gpt-image-guide/${file}`} alt={labels[index]} width={width} height={height} loading="lazy" style={{
    borderRadius: '0.5rem'
  }} />
            </a>)}
        </div>
      </div>
      <p className="bt-image-comparison-caption">{caption}</p>
    </div>;
};

`gpt-image-2`, `gpt-image-2.5-flare` और `gpt-image-2.5-sunburst` से उत्पाद चित्र, विज्ञापन सामग्री या डिज़ाइन ड्राफ़्ट बनाते समय डेवलपरों को अक्सर कई मुश्किल सवालों का सामना करना पड़ता है:

* **एक ही मॉडल और एक ही पैरामीटर के साथ अलग-अलग कॉल पर परिणाम क्यों बदलते हैं?**
* **4K या कोई निश्चित आकार माँगने के बावजूद प्राप्त छवि घटकर 1K क्यों रह जाती है?**
* **`Mask` से स्थानीय बदलाव या `quality=high` वास्तव में लागू हुआ या नहीं? अंत में शुल्क किस आधार पर लगता है?**

रोज़मर्रा के API कॉल में केवल HTTP स्टेटस कोड `200 OK` देखना काफ़ी नहीं है। इन तीनों शर्तों का एक साथ पूरा होना ज़रूरी है: **छवि बनना, लक्षित लेआउट में उसका उपयोग हो पाना, और लागत का पारदर्शी व अनुमानित होना**।

इन तीनों मॉडलों के वास्तविक व्यवहार को स्पष्ट करने के लिए BetterToken ने निचली परत पर **क्षमता-आधारित स्मार्ट रूटिंग, डिफ़ॉल्ट पैरामीटर की सफ़ाई, अमान्य पैरामीटर की अग्रिम रोकथाम और वास्तव में दिए गए पिक्सेल के आधार पर पारदर्शी बिलिंग** लागू की है। यह लेख 19 अक्टूबर 2026 के नवीनतम परीक्षण डेटा और मूल्य-स्नैपशॉट पर आधारित है। वास्तविक रूप से बनाई गई मूल छवियों और बिलों के माध्यम से यह बताता है कि कॉल कैसे करें, कौन-से परिणाम मिल सकते हैं और मॉडलों की अपनी कौन-सी वस्तुनिष्ठ सीमाएँ अभी भी हैं।

> **नोट**: यह लेख `gpt-image-2`, `gpt-image-2.5-flare` और `gpt-image-2.5-sunburst` पर केंद्रित है। Nano Banana सीरीज़ के पैरामीटर और बिलिंग प्रणाली अलग हैं; भ्रम से बचने के लिए उन्हें एक अन्य लेख में विस्तार से समझाया जाएगा।

## 1. एक ही मॉडल और पैरामीटर के साथ परिणाम अलग-अलग क्यों हो सकते हैं?

वास्तविक इंटीग्रेशन में एक ही मॉडल नाम के पीछे मौजूद अलग-अलग सेवा नोड की क्षमताएँ और स्थिरता अक्सर अलग होती हैं: कुछ रूट केवल बुनियादी 1K छवि बनाते हैं, जबकि कुछ `2048×2048` या `3840×2160` जैसी उच्च-रिज़ॉल्यूशन छवियाँ दे सकते हैं। `quality` के मान, संदर्भ छवि संपादन और `Mask` मास्क के समर्थन का स्तर भी नोड के अनुसार बदलता है।

यदि प्लेटफ़ॉर्म केवल मॉडल नाम के आधार पर बिना जाँच अनुरोध आगे भेजता है, तो डेवलपरों को बार-बार ऐसी स्थितियाँ मिलेंगी: “4K माँगा, लेकिन छोटी 1K छवि मिली”, “Mask भेजते ही अनुरोध में त्रुटि आई” या “पैरामीटर बार-बार बदलने पड़े”। इसीलिए हमें ऐसा कठोर परीक्षण मानक चाहिए जो API द्वारा पैरामीटर स्वीकार किए जाने और वास्तव में मिले परिणाम को अलग-अलग सत्यापित करे।

## 2. हमारा परीक्षण: “समर्थित” होने का निर्णय कैसे किया जाता है?

निष्कर्षों को वस्तुनिष्ठ और भरोसेमंद रखने के लिए हमने स्थिर संस्करण के रिग्रेशन परीक्षण में **22 मानक परीक्षण परिदृश्य** बनाए (17 वैध अनुरोधों से 18 छवियाँ सफलतापूर्वक मिलीं; अमान्य पैरामीटर वाले 5 परिदृश्य अपेक्षा के अनुसार रोके गए और उन पर शुल्क नहीं लगा)। इसके अतिरिक्त, ई-कॉमर्स के आम उपयोगों के लिए उत्पाद चित्र और Mask-संपादन नमूने बनाए।

हमारे सत्यापन मानदंड सीधे हैं:

1. **मूल फ़ाइल के पिक्सेल डिकोड करना**: हम API के दावे पर ही भरोसा नहीं करते। हर दी गई छवि की मूल फ़ाइल डिकोड करके उसकी चौड़ाई और ऊँचाई पढ़ते हैं और प्रतिक्रिया में दी गई बिलिंग श्रेणी तथा खाते से वास्तव में कटी राशि से मिलाते हैं।
2. **आकार के लक्ष्य पर खरा उतरना**: स्पष्ट रूप से माँगी गई चौड़ाई और ऊँचाई की अलग-अलग तुलना करते हैं। वास्तविक आकार बड़ा हो तो उसे पास मानते हैं; **किसी भी एक किनारे का आकार लक्ष्य से 5% से अधिक छोटा हो तो उसे मानक से कम मानते हैं** (नोट: यह मानदंड परीक्षण परिणामों का कठोर मूल्यांकन करने के लिए है; इसका अर्थ यह नहीं कि API आकार से छोटी वैध छवि को अपने-आप अस्वीकार कर देगा)। आकार छोड़ने या `auto` भेजने पर कोई निश्चित कैनवस लक्ष्य नहीं माना जाता।
3. **पैरामीटर स्वीकार होने और वास्तविक प्रभाव को अलग रखना**: इंटरफ़ेस में त्रुटि न आना केवल यह बताता है कि “पैरामीटर स्वीकार हुआ”। `Mask` ने क्षेत्र को सख्ती से अलग किया या `quality=high` से आँखों को दिखने वाला सुधार आया, यह अंतिम छवि देखकर ही तय किया जा सकता है।

## 3. परीक्षण में क्या सामने आया: कौन-से पैरामीटर सबसे अधिक गलत समझे जाते हैं?

अनुरोध पैरामीटर, वास्तव में मिले पिक्सेल और अंतिम बिल को साथ रखकर देखने पर हमें कई ऐसे तथ्य मिले जिन्हें डेवलपर अक्सर गलत समझते हैं:

| अनुरोध परिदृश्य | वास्तव में मिली छवि का आकार | बिलिंग श्रेणी और CNY दर | परीक्षण का निष्कर्ष और उपयोग में उसका अर्थ |
| :- | :- | :- | :- |
| `gpt-image-2`, `2048x2048`, `quality` छोड़ा गया | 2048×2048 | 2K, ¥0.11 | इस अनुरोध में `quality` भेजे बिना (डिफ़ॉल्ट गुणवत्ता पर) 2K की बड़ी छवि सफलतापूर्वक बनी |
| `flare`, `2048x2048`, `quality` छोड़ा गया | 2048×2048 | 2K, ¥0.15 | 2048×2048 आकार की डिलीवरी का परीक्षण से सत्यापन हुआ |
| `sunburst`, `2048x2048`, `quality` छोड़ा गया | 2048×2048 | 2K, ¥0.15 | 2048×2048 आकार की डिलीवरी का परीक्षण से सत्यापन हुआ |
| `gpt-image-2`, `1024x1024` | **1024×936** | 1K, ¥0.035 | उपयोगी छवि मिली, लेकिन ऊँचाई लगभग 8.6% कम रही; इस दौर के कठोर आकार मानक पर खरी नहीं उतरी |
| `flare` / `sunburst`, `1024x1024` | **दोनों 1254×1254** | **2K, दोनों ¥0.15** | **1K माँगने से 1K शुल्क की गारंटी नहीं होती**; अनुरोध से बड़ी वर्गाकार छवि मिली और 2K के रूप में वर्गीकृत हुई |
| `gpt-image-2`, `1536x1024` | 1536×1024 | 1K, ¥0.035 | सामान्य अनुपात वाली क्षैतिज छवि भी 1K बिलिंग श्रेणी में आती है |
| `gpt-image-2`, `3840x2160` | **3840×2159** | 4K, ¥0.13 | ऊँचाई में केवल 1 पिक्सेल का अंतर (विचलन \< 0.05%) है; 4K आकार स्वीकृति मानक पूरा हुआ |
| `gpt-image-2`, वैध Mask + `2048x2048` + `high` | 2048×2048 | 2K, ¥0.11 | Mask संपादन प्रक्रिया चली, लेकिन क्षेत्र का सटीक अलगाव छवि की जाँच से तय करना होगा |

पैरामीटर संगतता और त्रुटि प्रबंधन के परीक्षण में ये परिणाम भी मिले:

* **डिफ़ॉल्ट पैरामीटर की सहनशीलता**: `quality` और `size` छोड़ने, `null` भेजने या स्पष्ट रूप से `"auto"` देने पर छवि सामान्य रूप से बनती है।
* **4K को सही तरीके से माँगना**: **“4K” बिलिंग श्रेणी है; इसका अर्थ `4096x4096` वर्गाकार छवि का समर्थन नहीं है**। 4K स्तर की उच्च-रिज़ॉल्यूशन क्षैतिज छवि के लिए `3840x2160` का उपयोग करें।
* **अमान्य पैरामीटर बिना शुल्क रोके गए**: `4096x4096`, `stream=true`, खाली स्ट्रिंग `quality=""`, खाली स्ट्रिंग `size=""` या `n=0` भेजने वाले सभी परीक्षण अनुरोधों में `HTTP 400` त्रुटि आई और **कोई शुल्क नहीं लगा**।

## 4. BetterToken क्या देता है: हर रूट के लिए अलग अनुकूलन की ज़रूरत नहीं

आधार मॉडल में आकार के उतार-चढ़ाव और नोडों के बीच अंतर को संभालने के लिए BetterToken गेटवे स्तर पर चार काम करता है, ताकि आपको हर रूट के लिए अलग अनुकूलन कोड न लिखना पड़े:

1. **क्षमता के अनुसार स्मार्ट रूटिंग**: भेजे गए मॉडल, लक्ष्य आकार (जैसे 2K/4K), और छवि-संपादन/`Mask` पैरामीटर मौजूद हैं या नहीं, इन आधारों पर सिस्टम उपयुक्त क्षमता वाली उपलब्ध सेवा अपने-आप चुनता है।
2. **एकीकृत इंटरफ़ेस और पैरामीटर फ़ॉलबैक**: मानक `POST /v1/images/generations` (छवि बनाना) और `POST /v1/images/edits` (संदर्भ छवि/Mask संपादन) इंटरफ़ेस `null`, `auto` और छोड़े गए पैरामीटर अपने-आप संभालते हैं तथा अमान्य इनपुट को गेटवे पर ही रोकते हैं।
3. **वास्तविक आकार और बिलिंग विवरण की पारदर्शी वापसी**: छवि डेटा के साथ प्रतिक्रिया के `bettertoken_image_billing` फ़ील्ड में **वास्तविक डिकोड की गई चौड़ाई/ऊँचाई (`width`/`height`), बिलिंग श्रेणी (`billing_resolution`), मुद्रा और निपटान राशि (`settled_amount`)** सीधे मिलती है।
4. **दो मुख्य अवधारणाओं का स्पष्ट अंतर**:
   * **`Mask` पैरामीटर का समर्थन ≠ पिक्सेल-स्तर पर सटीक रीटच की गारंटी**: इंटरफ़ेस संदर्भ छवि और Mask अपलोड करके संपादन का समर्थन करता है, लेकिन कुछ परीक्षणों में मास्क से बाहर के संरक्षित क्षेत्र भी बदल गए। उदाहरण के लिए, दो वृत्तों के ज्यामितीय परीक्षण में बाएँ पारदर्शी वृत्त का रंग बदलने और दाएँ अपारदर्शी वृत्त को सुरक्षित रखने को कहा गया था, फिर भी दोनों वृत्तों का रंग बदल गया। इसलिए **हम Mask पैरामीटर भेजने के समर्थन की पुष्टि करते हैं, लेकिन हर बार पिक्सेल-स्तर पर सख्त क्षेत्र-अलगाव की गारंटी नहीं देते**।
   * **`quality` पैरामीटर का समर्थन ≠ गुणवत्ता में निश्चित सुधार की गारंटी**: इंटरफ़ेस `"auto"` या `"high"` जैसे मान स्वीकार कर सही रूट पर भेजता है। लेकिन हर छवि निर्माण में यादृच्छिकता होती है, इसलिए एक नमूने के आधार पर यह वादा नहीं करते कि `high` गुणवत्ता में किसी निश्चित प्रतिशत का सुधार ज़रूर देगा।

> ⚠️ **इंटीग्रेशन से पहले जानने योग्य दो वास्तविक सीमाएँ**:
>
> 1. **क्षमता के अनुसार रूटिंग से हर बार पिक्सेल सख्ती से तय नहीं हो जाते**: आधार सेवाओं के आउटपुट में अंतर के कारण सही नोड पर रूट होने पर भी वास्तविक पिक्सेल बदल सकते हैं (उदाहरण के लिए, आज `1024x1024` माँगने पर `1024×936` लौटाने वाले अनुरोध थे; `3840x2160` माँगने पर `3840×2161` लौटाने वाले नमूने भी थे)। यदि आपके काम में कैनवस का अनुपात बहुत अहम है, तो प्रतिक्रिया की वास्तविक चौड़ाई और ऊँचाई के आधार पर छवि को क्रॉप या पोस्ट-प्रोसेस करें।
> 2. **1K माँगने पर अंतिम शुल्क हमेशा 1K का नहीं होता**: बिलिंग सिस्टम **वास्तव में दी गई वैध छवि के विनिर्देश** के आधार पर श्रेणी तय करता है। आज दोनों 2.5 मॉडल (और `gpt-image-2` के कुछ मामलों) ने `1024x1024` के अनुरोध पर `1254×1254` लौटाया। सिस्टम ने इसे **2K** माना और उसी दर से शुल्क लगाया।

## 5. तीन मॉडलों का समर्थन: किस मॉडल को कॉल करें और कौन-सा मान भेजें?

`gpt-image-2`, `gpt-image-2.5-flare` और `gpt-image-2.5-sunburst` का मौजूदा क्षमता विन्यास और परीक्षण कवरेज इस प्रकार है:

| क्षमता आयाम | `gpt-image-2` | `gpt-image-2.5-flare` | `gpt-image-2.5-sunburst` |
| :- | :- | :- | :- |
| **1K छवि निर्माण अनुरोध** | समर्थित (परीक्षण हुआ; वास्तविक आकार लक्ष्य से अलग हो सकता है, जैसे 1024×936 या 1254×1254) | समर्थित (परीक्षण हुआ; इस दौर में 1254×1254 की बड़ी छवि मिली और 2K शुल्क लगा) | समर्थित (परीक्षण हुआ; इस दौर में 1254×1254 की बड़ी छवि मिली और 2K शुल्क लगा) |
| **2K छवि निर्माण (`2048x2048`)** | **इस दौर में डिलीवरी का परीक्षण हुआ** | **इस दौर में डिलीवरी का परीक्षण हुआ** | **इस दौर में डिलीवरी का परीक्षण हुआ** |
| **4K छवि निर्माण (`3840x2160`)** | **इस दौर में क्षैतिज छवि की डिलीवरी का परीक्षण हुआ** | समर्थन के लिए रूटिंग विन्यास संरेखित | समर्थन के लिए रूटिंग विन्यास संरेखित |
| **सामान्य संदर्भ-छवि संपादन (Mask के बिना)** | **इस दौर में समर्थन का परीक्षण हुआ** (Mask छोड़ने या खाली Mask भेजने पर सामान्य संपादन होता है) | अलग से पुष्टि नहीं (Mask समर्थन से सामान्य संपादन का समर्थन सिद्ध नहीं होता) | अलग से पुष्टि नहीं (Mask समर्थन से सामान्य संपादन का समर्थन सिद्ध नहीं होता) |
| **Mask से स्थानीय संपादन** | **इस दौर में 2K डिलीवरी का परीक्षण हुआ** | 4K Mask संपादन समर्थन के लिए कॉन्फ़िगर किया गया (अन्य श्रेणियाँ अपुष्ट) | 4K Mask संपादन समर्थन के लिए कॉन्फ़िगर किया गया (अन्य श्रेणियाँ अपुष्ट) |
| **गुणवत्ता पैरामीटर (`quality`)** | डिफ़ॉल्ट/`auto`/`high` **सभी का परीक्षण से सत्यापन** | डिफ़ॉल्ट/`auto` का परीक्षण; `high` रूटिंग कॉन्फ़िगरेशन संरेखित | डिफ़ॉल्ट/`auto` का परीक्षण; `high` रूटिंग कॉन्फ़िगरेशन संरेखित |

*नोट: तालिका में “इस दौर में परीक्षण हुआ” का अर्थ है कि आज के रिग्रेशन और उदाहरण निर्माण में सीधे छवियाँ और बिलिंग नमूने मिले। “समर्थन के लिए रूटिंग विन्यास संरेखित” का अर्थ है कि प्लेटफ़ॉर्म ने उस क्षमता वाले चैनल का विन्यास पूरा कर लिया है, लेकिन आज हर संभावित संयोजन के लिए अनुरोध दोबारा नहीं भेजा गया।*

## 6. वास्तविक छवियों के दो उदाहरण: परिणाम कैसे दिखते हैं?

जनरेशन की वास्तविक गुणवत्ता दिखाने के लिए हमने [OpenAI की आधिकारिक इमेज प्रॉम्प्ट मार्गदर्शिका](https://developers.openai.com/api/docs/guides/image-prompting) में दिए गए **“स्पष्ट विषय + सामग्री की बनावट + रोशनी की दिशा + संरचना का अनुपात + निषिद्ध तत्व”** ढाँचे का अनुसरण किया और BetterToken के वास्तविक API से नीचे दिए गए दो ई-कॉमर्स उदाहरण बनाए (मूल आउटपुट रखा गया है; कोई पोस्ट-प्रोसेसिंग या रीटच नहीं हुआ)।

### उदाहरण A: ई-कॉमर्स उत्पाद फ़ोटोग्राफ़ी; 1K / 2K / 4K आकार और विवरण

**दृश्य की रूपरेखा (मूल चीनी अवधारणा)**:

> एक वास्तविक ई-कॉमर्स स्टूडियो फ़ोटो बनाएँ: मूंगे-लाल रंग का सेरामिक मग (हैंडल दाईं ओर) हल्के धूसर पत्थर के काउंटर पर रखा है और बाईं ओर बेज रंग का मुड़ा हुआ लिनन कपड़ा है। मग पर साफ़ सफ़ेद अक्षरों में “BETTER DAY” लिखा है। ऊपर बाईं ओर से आने वाली मुलायम दिशात्मक रोशनी, सेरामिक ग्लेज़ की हल्की चमक, लिनन के रेशे और प्राकृतिक संपर्क-छायाएँ दिखाएँ। मग पूरा फ्रेम में और बीच में हो; पृष्ठभूमि सादी और तटस्थ हो, कोई अन्य वस्तु, वॉटरमार्क या अतिरिक्त टेक्स्ट न हो।

**वास्तविक कॉल में भेजा गया अंग्रेज़ी Prompt**:

```text theme={null}
Photorealistic ecommerce studio photograph. A coral-red ceramic mug with a handle on the right sits on a pale gray stone tabletop, with a folded beige linen cloth to its left. The mug reads "BETTER DAY" in clear white lettering. Soft directional light from upper left, subtle glaze reflections, visible linen fibers and natural contact shadows. Entire mug in frame, centered composition, simple neutral background. No other objects, no watermark, no additional text.
```

हमने `gpt-image-2` (`quality="high"`, हर बार 1 छवि) इस्तेमाल किया और ऊपर दिया गया Prompt बिल्कुल समान रखा। Prompt में “4K” लिखकर परिणाम को प्रभावित करने के बजाय केवल `size` पैरामीटर से तीन आकार माँगे:

| अनुरोधित आकार (`size`) | वास्तव में मिला आकार | वास्तविक बिलिंग श्रेणी / लागत | एकल अनुरोध का समय |
| :- | :- | :- | :- |
| `1024x1024` | **1254×1254** | **2K / ¥0.11** | 34.35 सेकंड |
| `2048x2048` | **2048×2048** | **2K / ¥0.11** | 31.97 सेकंड |
| `3840x2160` | **3840×2161** | **4K / ¥0.13** | 24.36 सेकंड |

**1. `1024x1024` अनुरोध की मूल डिलीवर छवि (वास्तविक आकार 1254×1254):**

<Frame>
  <img src="https://mintcdn.com/bettertoken-d796114e/hPGTCgdK9IohJYOA/images/gpt-image-guide/product-1k-0.png?fit=max&auto=format&n=hPGTCgdK9IohJYOA&q=85&s=975ebb5653a1a0e6847310d8448a56d9" alt="GPT Image 2 उत्पाद छवि: 1024×1024 का अनुरोध, वास्तविक डिलीवरी 1254×1254" style={{ borderRadius: '0.5rem' }} width="1254" height="1254" data-path="images/gpt-image-guide/product-1k-0.png" />
</Frame>

**2. `2048x2048` अनुरोध की मूल डिलीवर छवि (वास्तविक आकार 2048×2048):**

<Frame>
  <img src="https://mintcdn.com/bettertoken-d796114e/hPGTCgdK9IohJYOA/images/gpt-image-guide/product-2k-0.png?fit=max&auto=format&n=hPGTCgdK9IohJYOA&q=85&s=a290e92bd7db319ed801c06640c7ba8d" alt="GPT Image 2 उत्पाद छवि: अनुरोध और वास्तविक डिलीवरी दोनों 2048×2048" style={{ borderRadius: '0.5rem' }} width="2048" height="2048" data-path="images/gpt-image-guide/product-2k-0.png" />
</Frame>

**3. `3840x2160` अनुरोध की मूल क्षैतिज छवि (वास्तविक आकार 3840×2161):**

<Frame>
  <img src="https://mintcdn.com/bettertoken-d796114e/hPGTCgdK9IohJYOA/images/gpt-image-guide/product-4k-0.png?fit=max&auto=format&n=hPGTCgdK9IohJYOA&q=85&s=1e68f4d96829d9e52f9fa88aceac3c27" alt="GPT Image 2 उत्पाद की क्षैतिज छवि: 3840×2160 का अनुरोध, वास्तविक डिलीवरी 3840×2161" style={{ borderRadius: '0.5rem' }} width="3840" height="2161" data-path="images/gpt-image-guide/product-4k-0.png" />
</Frame>

**4. तीनों छवियों में संबंधित हिस्सों (मग का टेक्स्ट और सामग्री के विवरण) के मूल आकार के क्रॉप की तुलना:**

<Frame>
  <GptImageComparison kind="crops" label="तीनों उत्पाद छवियों के मूल पिक्सेल क्रॉप की 100% तुलना" labels={["1K अनुरोध · 1254² प्राप्त","2K अनुरोध · 2048² प्राप्त","4K अनुरोध · 3840×2161 प्राप्त"]} caption="हर पैनल मूल पिक्सेल का 480×480 क्रॉप है। छवियाँ अलग-अलग बनाई गई हैं और उनकी संरचना अलग है। पेज पर आकार बदलने से फ़ाइल के पिक्सेल नहीं बदलते।" />
</Frame>

**परीक्षण टिप्पणियाँ**:

* **दृश्य की अच्छी पूर्णता**: तीनों छवियों में मूंगे-लाल ग्लेज़ की चमक, दाईं ओर का हैंडल, हल्के धूसर पत्थर का काउंटर, बेज लिनन के रेशे और साफ़ पढ़ा जा सकने वाला सफ़ेद “BETTER DAY” टेक्स्ट मौजूद है।
* **स्वतंत्र सैंपलिंग के अंतर**: हर जनरेशन स्वतंत्र सैंपलिंग है, इसलिए मग के अनुपात, फ़ॉन्ट की मोटाई और कपड़े की तहों में स्वाभाविक अंतर है (उदाहरण के लिए, 4K क्षैतिज छवि में टेक्स्ट दो पंक्तियों में है)। इसलिए क्रॉप केवल हर छवि के वास्तविक विवरण दिखाते हैं; वे एक समान संरचना वाला ऑप्टिकल शार्पनेस प्रयोग नहीं हैं।
* **बिलिंग सीमा स्पष्ट रूप से दिखाई देती है**: पहली छवि `1024x1024` माँगने पर भी `1254×1254` की उच्च-रिज़ॉल्यूशन वर्गाकार छवि के रूप में मिली। इसलिए दूसरी `2048×2048` छवि की तरह इसे भी **2K श्रेणी (¥0.11)** पर बिल किया गया।

### उदाहरण B: उत्पाद का स्थानीय रंग बदलना; Mask का वास्तविक प्रभाव और सीमाएँ

हमने उदाहरण A की पहली उत्पाद छवि (`1254×1254`) को इनपुट मूल छवि के रूप में लिया और उसी आकार की Alpha चैनल वाली मास्क छवि [mask-mug.png](/images/gpt-image-guide/mask-mug.png) बनाई: **केवल मग के शरीर का बहुभुज पारदर्शी रखा (बदलाव की अनुमति); हैंडल, मग के किनारे की भीतरी दीवार और पृष्ठभूमि अपारदर्शी रखी (इन्हें सुरक्षित रखना है); मग का टेक्स्ट पारदर्शी क्षेत्र में था और Prompt में उसे बनाए रखने को कहा गया**।

<Frame>
  <GptImageComparison kind="mask" label="मूल छवि, मास्क ओवरले का दृश्य और संपादन परिणाम" labels={["मूल छवि","हरा ओवरले: संपादन की अनुमति वाला क्षेत्र","वास्तविक संपादन परिणाम"]} caption="केवल तुलना के लेआउट के लिए छोटा किया गया है। मास्क के बाहर कप का किनारा भी बदल गया। मूल API आउटपुट अलग से सुरक्षित हैं।" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/bettertoken-d796114e/hPGTCgdK9IohJYOA/images/gpt-image-guide/mask-diagram.png?fit=max&auto=format&n=hPGTCgdK9IohJYOA&q=85&s=7d648791e31a2358ee47907bc3755fae" alt="Mask क्षेत्र का चित्र: काला पारदर्शी और बदलने योग्य क्षेत्र है; सफ़ेद अपारदर्शी और सुरक्षित रखा जाने वाला क्षेत्र है" style={{ borderRadius: '0.5rem' }} width="1254" height="1254" data-path="images/gpt-image-guide/mask-diagram.png" />
</Frame>

*(नोट: ऊपर का चित्र काले-सफ़ेद रंगों में दृश्य उदाहरण है। काला बदलने योग्य क्षेत्र और सफ़ेद सुरक्षित रखा जाने वाला क्षेत्र दिखाता है। API पर वास्तव में अपलोड की गई फ़ाइल पारदर्शी चैनल वाली `mask-mug.png` थी।)*

**दृश्य की रूपरेखा (मूल चीनी अवधारणा)**:

> पारदर्शी मास्क क्षेत्र के भीतर केवल मग के मूंगे-लाल शरीर को गहरे नेवी नीले रंग में बदलें। सेरामिक सामग्री, रोशनी और चमक बनाए रखें। सफ़ेद “BETTER DAY” टेक्स्ट, लाल हैंडल, लिनन कपड़ा, काउंटर, पृष्ठभूमि और पूरी संरचना को न बदलें। कोई वस्तु न जोड़ें और न हटाएँ।

**वास्तविक संपादन Prompt (मॉडल: `gpt-image-2`, `size="2048x2048"`, `quality="high"`)**:

```text theme={null}
Change only the coral-red mug body inside the transparent mask to deep navy blue. Preserve ceramic texture, lighting and reflections. Keep the white "BETTER DAY" lettering, red handle, linen cloth, tabletop, background and composition unchanged. Do not add or remove any objects. Do not change anything outside the transparent mask.
```

**संपादन का वास्तविक परिणाम (2048×2048, 38.51 सेकंड, लागत ¥0.11):**

<Frame>
  <img src="https://mintcdn.com/bettertoken-d796114e/hPGTCgdK9IohJYOA/images/gpt-image-guide/product-mask-0.png?fit=max&auto=format&n=hPGTCgdK9IohJYOA&q=85&s=1a3ba294610d624bd6a09bc7c03aa228" alt="GPT Image 2 Mask संपादन परिणाम: मग का शरीर गहरा नीला हुआ और हैंडल लाल बना रहा, लेकिन किनारे की भीतरी दीवार भी बदल गई" style={{ borderRadius: '0.5rem' }} width="2048" height="2048" data-path="images/gpt-image-guide/product-mask-0.png" />
</Frame>

**सुरक्षित क्षेत्र में रंग फैलने का विस्तृत तुलना दृश्य:**

<Frame>
  <GptImageComparison kind="boundary" label="Mask के सुरक्षित क्षेत्र का बड़ा दृश्य: किनारा और भीतरी दीवार पारदर्शी मास्क में नहीं थे, फिर भी नीले हो गए" labels={["मूल: लाल किनारा और अंदरूनी दीवार","संपादन के बाद: किनारा और अंदरूनी दीवार भी नीली"]} caption="संबंधित क्षेत्रों को दिखाने के लिए बड़ा या छोटा किया गया है; यह पिक्सेल-दर-पिक्सेल समानता की तुलना नहीं है। दोनों क्षेत्र पारदर्शी मास्क के बाहर हैं।" />
</Frame>

**विपरीत उदाहरण: रिग्रेशन परीक्षण में “दो वृत्तों का रंग बदलना” नमूना (Mask स्वीकार होना ≠ सटीक अलगाव)**

<Frame>
  <GptImageComparison kind="circles" label="रिग्रेशन परीक्षण का दो-वृत्त वाला विपरीत उदाहरण: केवल बाएँ वृत्त को पारदर्शी करके बदलने को कहा गया, लेकिन सुरक्षित क्षेत्र का दायाँ वृत्त भी बदल गया" labels={["मूल: दो लाल वृत्त","हरा: केवल बाईं ओर संपादन की अनुमति","परिणाम: दोनों वृत्त नीले हो गए"]} caption="BetterToken API के मौजूदा नमूने। दाईं ओर की सुरक्षित वस्तु भी बदल गई। छवियाँ केवल लेआउट के लिए छोटी की गई हैं।" />
</Frame>

**परीक्षण टिप्पणियाँ (सीमाओं का स्पष्ट खुलासा)**:

* **मुख्य रंग-परिवर्तन उद्देश्य पूरा हुआ**: मग का बाहरी शरीर सफलतापूर्वक गहरा नेवी नीला हुआ और सेरामिक चमक बनी रही; **मास्क के बाहर का लाल हैंडल, बाईं ओर का लिनन कपड़ा और पृष्ठभूमि कुल मिलाकर सुरक्षित रहे, तथा मास्क के भीतर “BETTER DAY” टेक्स्ट पढ़ने योग्य रहा**।
* **Mask की सख्त सीमा पास नहीं हुई (रंग बाहर तक फैला)**: मग के किनारे और अंदर की दीवार को ध्यान से देखने पर पता चलता है कि **अपारदर्शी सुरक्षित क्षेत्र में मौजूद मूंगे-लाल रंग का हिस्सा भी मॉडल ने गहरा नीला कर दिया**। अधिक चरम “दो वृत्त” ज्यामितीय परीक्षण में बिना मास्क वाला दायाँ वृत्त भी बदल गया।
* **उपयोग का सुझाव**: संदर्भ छवि और Mask अपलोड करते समय दोनों का कैनवस आकार समान रखें (बदलने वाला क्षेत्र पारदर्शी और सुरक्षित रखने वाला क्षेत्र अपारदर्शी हो) तथा Prompt में “क्या बदलना है” और “क्या सुरक्षित रखना है”, दोनों लिखें। ब्रांड लोगो, पैकेजिंग के छोटे अक्षरों या सख्त किनारों वाली औद्योगिक व्यावसायिक छवियों के लिए **जनरेशन के बाद बड़ा करके सुरक्षित क्षेत्र की सीमाएँ ज़रूर जाँचें**।

## 7. कीमत और वास्तविक उपयोग लागत: अंत में कितना शुल्क लगेगा?

BetterToken पारदर्शी कीमतें रखता है। नीचे **19 अक्टूबर 2026** का सार्वजनिक मूल्य-स्नैपशॉट है (CNY एंटरप्राइज़ RMB खातों पर और USD सामान्य डॉलर खातों पर लागू है; दोनों की कीमत अलग है और इन्हें वास्तविक समय की विनिमय दर से नहीं बदला जाता):

| मॉडल का नाम | 1K दर / छवि | 2K दर / छवि | 4K दर / छवि |
| :- | :- | :- | :- |
| **`gpt-image-2`** (CNY / USD) | ¥0.035 / \$0.0062 | ¥0.11 / \$0.0194 | ¥0.13 / \$0.0229 |
| **`gpt-image-2.5-flare`** (CNY / USD) | ¥0.035 / \$0.0062 | ¥0.15 / \$0.0265 | ¥0.18 / \$0.0318 |
| **`gpt-image-2.5-sunburst`** (CNY / USD) | ¥0.035 / \$0.0062 | ¥0.15 / \$0.0265 | ¥0.18 / \$0.0318 |

ऊपर दी गई सार्वजनिक दरों के अनुसार, यदि बनी सभी 100 छवियाँ वास्तव में संबंधित बिलिंग श्रेणी में आती हैं, तो 100 छवियों की अनुमानित लागत यह होगी (अंकगणितीय अनुमान):

| मॉडल का नाम | 100 छवियों की 1K लागत | 100 छवियों की 2K लागत | 100 छवियों की 4K लागत |
| :- | :- | :- | :- |
| **`gpt-image-2`** (CNY / USD) | ¥3.50 / \$0.62 | ¥11.00 / \$1.94 | ¥13.00 / \$2.29 |
| **`flare` या `sunburst`** (CNY / USD) | ¥3.50 / \$0.62 | ¥15.00 / \$2.65 | ¥18.00 / \$3.18 |

> 💡 **बजट बनाने की मुख्य बात: लागत “वास्तव में मिली श्रेणी” के आधार पर आँकें, “अनुरोध पैरामीटर” के आधार पर नहीं।**
>
> जैसा कि ऊपर के परीक्षण में दिखा, आज `flare`, `sunburst` या `gpt-image-2` को `1024x1024` (1K) भेजने पर कुछ अनुरोधों में `1254×1254` छवियाँ मिलीं। ऐसी स्थिति में सिस्टम वास्तविक डिलीवरी के आधार पर इसे **2K** वर्गीकृत करता है (अर्थात ¥0.15 या ¥0.11, न कि 1K की ¥0.035 दर)। यदि `flare` को भेजे गए सभी 100 `1024x1024` अनुरोध `1254×1254` लौटाएँ, तो मौजूदा दर से 100 छवियों की लागत **¥15.00 (अंकगणितीय अनुमान)** होगी।
>
> इसके अलावा, सिस्टम का वर्गीकरण लक्ष्य आकार और उचित विचलन सीमा दोनों पर आधारित है (उदाहरण के लिए, `3840×2159` सामान्यतः 4K और `1536×1024` 1K के रूप में वर्गीकृत होता है)। अपने सिस्टम में “सबसे लंबा किनारा 1024 से बड़ा है या नहीं” जैसे सरल नियम से शुल्क दोबारा न निकालें। **अंतिम निपटान हमेशा प्रतिक्रिया के `bettertoken_image_billing` फ़ील्ड पर आधारित होता है।**

### केवल सतही “प्रति छवि कम कीमत” क्यों न देखें?

अलग-अलग प्लेटफ़ॉर्म के इमेज API खर्चों की तुलना करते समय इन तीन लागतों की गणना करें:

1. **कीमत तभी तुलनीय है जब वास्तविक आउटपुट लक्ष्य आकार तक पहुँचे**: “4K समर्थन और बहुत कम कीमत” का दावा करने वाला अनुरोध यदि केवल 1024 की छोटी, घटाई हुई छवि लौटाए, तो उच्च-रिज़ॉल्यूशन छवि वाले उत्पादन वातावरण में उपयोग नहीं हो सकता और उसे वैध 4K कीमत की तुलना में शामिल नहीं करना चाहिए।
2. **विफलता और दोबारा काम करने की लागत जोड़ें**: इस दौर के अमान्य पैरामीटर परीक्षणों पर शुल्क नहीं लगा; सफलतापूर्वक मिली लेकिन असंतोषजनक छवि के लिए दोबारा अनुरोध करना एक नया अनुरोध है और उसका बजट अलग रखें। इस लेख के उत्पाद और Mask उदाहरणों की 4 छवियाँ (3 जनरेशन + 1 संपादन) प्रत्येक एक ही अनुरोध में मिलीं। Mask नमूने में ऊपर बताई गई सीमा के बाहर रंग बदलने की समस्या थी। प्रति छवि लागत क्रमशः ¥0.11, ¥0.11, ¥0.13 और ¥0.11 थी; **चारों छवियों की वास्तविक कुल लागत केवल ¥0.46** रही और बिल खाते से कटी राशि से पूरी तरह मेल खाता था। यदि अस्थिर रूट या असंगत पैरामीटर के कारण बार-बार जनरेशन करनी पड़े, तो प्रति छवि दिखाई देने वाली कीमत कम होने पर भी उपयोगी सामग्री प्राप्त करने की वास्तविक कुल लागत बढ़ सकती है।
3. **छिपी हुई विकास-अनुकूलन लागत घटाएँ**: एकीकृत पैरामीटर मानक, क्षमता-आधारित स्मार्ट रूटिंग और वास्तविक पिक्सेल व बिलिंग फ़ील्ड की तत्काल वापसी से BetterToken अलग-अलग सेवाओं को अनुकूलित करने तथा आकार और लागत की जानकारी स्वयं संकलित करने का काम घटाता है।

## 8. सीधे कॉपी करने योग्य कॉल उदाहरण

अपनी BetterToken API Key को `BETTERTOKEN_API_KEY` पर्यावरण चर में रखें और कॉल शुरू करने के लिए नीचे दिए कमांड सीधे कॉपी करें।

### उदाहरण 1: उच्च-रिज़ॉल्यूशन उत्पाद छवि बनाने का JSON अनुरोध (`POST /v1/images/generations`)

यह उदाहरण `gpt-image-2` को कॉल करके `2048x2048` की एक उच्च-रिज़ॉल्यूशन उत्पाद छवि बनाता है (`model` को सीधे `gpt-image-2.5-flare` या `gpt-image-2.5-sunburst` से बदला जा सकता है):

```bash theme={null}
curl https://bettertoken.ai/v1/images/generations -o response.json \
  -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
  "model": "gpt-image-2",
  "prompt": "Photorealistic ecommerce studio photograph. A coral-red ceramic mug with a handle on the right sits on a pale gray stone tabletop, with a folded beige linen cloth to its left. The mug reads \"BETTER DAY\" in clear white lettering. Soft directional light from upper left, subtle glaze reflections, visible linen fibers and natural contact shadows. Entire mug in frame, centered composition, simple neutral background. No other objects, no watermark, no additional text.",
  "size": "2048x2048",
  "quality": "high",
  "n": 1,
  "response_format": "b64_json",
  "output_format": "png"
}
JSON
```

* **आकार संबंधी नोट**: 4K क्षैतिज छवि के लिए `"size"` को `"3840x2160"` करें (`"4096x4096"` का उपयोग न करें)। मौजूदा वैध आकारों में ये शर्तें पूरी होनी चाहिए: चौड़ाई और ऊँचाई 16 के गुणज हों, सबसे लंबा किनारा 3840 से अधिक न हो, लंबे और छोटे किनारे का अनुपात 3:1 से अधिक न हो, कुल पिक्सेल `655,360` से `8,294,400` के बीच हों।
* **फ़ाइल फ़ॉर्मैट पहचानने का नोट**: अनुरोध में `"output_format": "png"` देने के बावजूद कुछ आधार नोड JPEG फ़ॉर्मैट का बाइनरी डेटा लौटा सकते हैं। छवि सहेजते या संसाधित करते समय एक्सटेंशन को पहले से तय न करें; फ़ाइल हेडर (Magic Bytes) से वास्तविक छवि फ़ॉर्मैट पहचानें।

### उदाहरण 2: Multipart संदर्भ छवि और Mask से स्थानीय संपादन (`POST /v1/images/edits`)

मूल छवि `product-1k-0.png` और उसी आकार की पारदर्शी मास्क `mask-mug.png` तैयार करें (यदि केवल सामान्य संदर्भ छवि संपादन चाहिए, तो `-F "mask=..."` वाली पंक्ति हटा दें):

```bash theme={null}
curl https://bettertoken.ai/v1/images/edits -o response.json \
  -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
  -F "model=gpt-image-2" \
  -F "image=@product-1k-0.png;type=image/png" \
  -F "mask=@mask-mug.png;type=image/png" \
  -F 'prompt=Change only the coral-red mug body inside the transparent mask to deep navy blue. Preserve ceramic texture, lighting and reflections. Keep the white "BETTER DAY" lettering, red handle, linen cloth, tabletop, background and composition unchanged. Do not add or remove any objects. Do not change anything outside the transparent mask.' \
  -F "size=2048x2048" \
  -F "quality=high" \
  -F "n=1" \
  -F "response_format=b64_json"
```

### उदाहरण 3: वास्तव में मिले पिक्सेल और बिलिंग जानकारी पढ़ना (प्रतिक्रिया संरचना और पार्सिंग कोड)

मानक `data[].b64_json` के अलावा BetterToken के प्रतिक्रिया बॉडी में विस्तारित फ़ील्ड नोड `bettertoken_image_billing` भी शामिल है:

```json theme={null}
{
  "created": 1792398084,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
    }
  ],
  "bettertoken_image_billing": {
    "currency": "CNY",
    "settled_amount": "0.11",
    "outputs": [
      {
        "index": 0,
        "width": 2048,
        "height": 2048,
        "billing_resolution": "2K",
        "currency": "CNY",
        "amount": "0.11"
      }
    ]
  }
}
```

नीचे दिए Python कोड से **छवि डिकोड करना, वास्तविक फ़ॉर्मैट पहचानना, वास्तविक आकार पढ़ना और बिल की जाँच करना** एक ही चरण में पूरा किया जा सकता है:

```python theme={null}
import base64
import io
import json
from pathlib import Path
from PIL import Image  # 需要 Pillow

# 将 API 的 JSON 响应保存为 response.json 后执行。
resp_json = json.loads(Path("response.json").read_text())
if "error" in resp_json:
    raise RuntimeError(resp_json["error"])

billing = resp_json["bettertoken_image_billing"]
outputs = {item["index"]: item for item in billing["outputs"]}
for index, item in enumerate(resp_json["data"]):
    img_bytes = base64.b64decode(item["b64_json"], validate=True)
    with Image.open(io.BytesIO(img_bytes)) as image:
        image.load()
        width, height = image.size
        ext = {"PNG": "png", "JPEG": "jpg", "WEBP": "webp"}.get(image.format)
        if ext is None:
            raise ValueError(f"未处理的图片格式：{image.format}")
    Path(f"output_{index}.{ext}").write_bytes(img_bytes)
    info = outputs[index]
    print(f"图片 {index}：原图 {width}×{height}；计费档位 {info['billing_resolution']}")
    print(f"单张费用：{info['amount']} {info['currency']}")
    if (width, height) != (info["width"], info["height"]):
        print("图片像素与响应尺寸不一致，请保留结果并联系支持。")
print(f"本次结算：{billing['settled_amount']} {billing['currency']}")

```

***

**संदर्भ सामग्री**:

* [OpenAI आधिकारिक दस्तावेज़: इमेज प्रॉम्प्ट लिखने की मार्गदर्शिका (Image Prompting Guide)](https://developers.openai.com/api/docs/guides/image-prompting)
* [OpenAI Cookbook: उच्च इनपुट फ़िडेलिटी के साथ छवि बनाने और संपादित करने का उदाहरण](https://developers.openai.com/cookbook/examples/generate_images_with_high_input_fidelity)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.