Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> HTML

HTML में <canvas> एलिमेंट का अधिकतम आकार


कैनवास आकार सीमाएँ

सभी वेब ब्राउज़र्स कैनवास एलिमेंट की चौड़ाई, ऊंचाई, और कुल क्षेत्रफल (पिक्सेल्स में) को सीमित करते हैं। ये सीमाएँ GPU मेमोरी, सिक्योरिटी, और प्रदर्शन कारणों से मौजूद हैं।

ब्राउज़र-वार अधिकतम सीमाएँ

थ>ब्राउज़र थ>अधिकतम चौड़ाई थ>अधिकतम ऊंचाई थ>अधिकतम क्षेत्रफल (पिक्सेल्स)
Google Chrome 32,767 px 32,767 px 268,435,456 (256 मेगापिक्सेल)
Firefox 32,767 px 32,767 px 472,907,776 (~451 मेगापिक्सेल)
Safari (macOS) 32,767 px 32,767 px 268,435,456 (iOS पर कम)
Safari (iOS) 16,384 px 16,384 px ~67 मेगापिक्सेल (डिवाइस अनुसार भिन्न)
Edge (Chromium) 32,767 px 32,767 px 268,435,456
Internet Explorer 11 8,192 px 8,192 px ~67 मेगापिक्सेल
IE Mobile 4,096 px 4,096 px ~16 मेगापिक्सेल

सीमाओं का पता लगाना

function getCanvasLimits() {
    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');
    
    // बाइनरी सर्च से अधिकतम आकार खोजें
    function findMaxDimension(getSize, setSize) {
        let low = 1, high = 32767;
        while (low <= high) {
            const mid = Math.floor((low + high) / 2);
            try {
                setSize(mid);
                ctx.fillRect(0, 0, 1, 1); // टेस्ट ड्रा
                low = mid + 1;
            } catch (e) {
                high = mid - 1;
            }
        }
        return high;
    }
    
    // ध्यान: यह विधि धीमी हो सकती है और कैनवास को दूषित कर सकती है
    // बेहतर: ज्ञात सीमाओं का उपयोग करें या छोटे टेस्ट कैनवास बनाएँ
}

व्यावहारिक प्रभाव

थ>उपयोग मामला थ>सिफारिश
उच्च-रिज़ॉल्यूशन निर्यात कई छोटे कैनवास टाइल्स में रेंडर करें और सर्वर-साइड जोड़ें
बड़े गेम वर्ल्ड टाइल-आधारित रेंडरिंग; केवल दृश्य भाग ड्रा करें
PDF/PNG निर्यात सर्वर-साइड रेंडरिंग (Puppeteer, headless Chrome) उपयोग करें
फोटो संपादन डाउनस्केल → संपादित करें → अपस्केल, या टाइल्स में काम करें

सुरक्षित कैनवास निर्माण

function createSafeCanvas(width, height, options = {}) {
    const { fallbackWidth = 4096, fallbackHeight = 4096 } = options;
    
    // ज्ञात सुरक्षित सीमाओं के विरुद्ध जांचें
    const MAX_DIM = 16384; // रूढ़िवादी सुरक्षित सीमा (iOS Safari)
    const MAX_AREA = 67108864; // 64 मेगापिक्सेल
    
    if (width > MAX_DIM || height > MAX_DIM || width * height > MAX_AREA) {
        console.warn(`अनुरोधित आकार (${width}x${height}) सुरक्षित सीमा से अधिक है। फॉलबैक उपयोग।`);
        width = Math.min(width, fallbackWidth);
        height = Math.min(height, fallbackHeight);
    }
    
    const canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    
    // सत्यापित करें कि कैनवास वास्तव में बनाया गया था
    try {
        const ctx = canvas.getContext('2d');
        ctx.fillRect(0, 0, 1, 1); // टेस्ट ड्रा
        return canvas;
    } catch (e) {
        console.error('कैनवास निर्माण विफल:', e);
        // छोटे आकार के साथ पुनः प्रयास
        return createSafeCanvas(Math.floor(width/2), Math.floor(height/2), options);
    }
}

// उपयोग
const canvas = createSafeCanvas(20000, 20000); // स्वचालित रूप से सुरक्षित आकार में समायोजित होगा

मेमोरी विचार

  • प्रति पिक्सेल: 4 बाइट्स (RGBA32) = 4 MB प्रति मेगापिक्सेल
  • 32767×32767 = ~4 GB RAM (सिर्फ बफर के लिए!)
  • मोबाइल उपकरणों पर बहुत कम मेमोरी उपलब्ध
  • बड़े कैनवास बनाने से पहले navigator.deviceMemory जांचें
// मेमोरी-जागरूक कैनवास निर्माण
function createCanvasWithMemoryCheck(width, height) {
    const bytesPerPixel = 4;
    const requiredMB = (width * height * bytesPerPixel) / (1024 * 1024);
    const availableMB = navigator.deviceMemory ? navigator.deviceMemory * 1024 : 512; // अनुमान
    
    if (requiredMB > availableMB * 0.5) { // 50% से अधिक उपयोग न करें
        throw new Error(`अपर्याप्त मेमोरी: ${requiredMB.toFixed(0)}MB आवश्यक, ~${availableMB}MB उपलब्ध`);
    }
    
    const canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    return canvas;
}
  1. HTML size एट्रिब्यूट HTML size एट्रिब्यूट

    परिचय HTML size एट्रिब्यूट <select> और <input> HTML एलिमेंट्स में दृश्यमान विकल्पों/अक्षरों की संख्या को दर्शाता है। इसका व्यवहार एलिमेंट प्रकार के अनुसार भिन्न होता है। सिंटैक्स <tagname size=number></tagname> उदाहरण <select> एलिमेंट के लिए, size दृश्यमान विकल्पों की

  1. HTML कोटेशन्स (उद्धरण) HTML कोटेशन्स (उद्धरण)

    परिचय HTML कोटेशन्स HTML में उद्धरण बनाने के लिए उपयोग किए जाते हैं। HTML <q> टैग एक छोटे उद्धरण को परिभाषित करने के लिए उपयोग किया जाता है। यह एक इंलाइन एलिमेंट है। HTML <blockquote> टैग एक ऐसे सेक्शन को परिभाषित करने के लिए उपयोग किया जाता है जिसे किसी अन्य स्रोत से उद्धृत किया गया है।

  1. HTML DOM Object ऑब्जेक्ट HTML DOM Object ऑब्जेक्ट

    परिचय HTML DOM Object Object HTML में <object> एलिमेंट को दर्शाता है। <object> एलिमेंट बनाना var objectElement = document.createElement(OBJECT) यहां, objectElement में निम्नलिखित प्रॉपर्टीज हो सकती हैं: प्रॉपर्टी विवरण data ऑब्जेक्ट एलिमेंट द्वारा उपयोग किए जा रहे रिसोर्स का UR