"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > कैनवास के साथ छवियों का आकार बदलते समय दांतेदार किनारों और धुंधले परिणामों पर कैसे काबू पाएं?

कैनवास के साथ छवियों का आकार बदलते समय दांतेदार किनारों और धुंधले परिणामों पर कैसे काबू पाएं?

2024-11-06 को प्रकाशित
ब्राउज़ करें:531

How to Overcome Jagged Edges and Blurry Results When Resizing Images with Canvas?

जावास्क्रिप्ट में कैनवास का उपयोग करके छवियों का आकार बदलने के दौरान समस्याओं को हल करना

जावास्क्रिप्ट में कैनवास का उपयोग करके छवियों का आकार बदलने से कभी-कभी ध्यान देने योग्य टेढ़े-मेढ़े किनारे या धुंधलापन आ सकता है। सुचारू आकार बदलने के लिए, डाउन-स्टेपिंग नामक तकनीक को नियोजित किया जा सकता है।

अधिकांश ब्राउज़रों में, डिफ़ॉल्ट रूप से आकार बदलने के लिए रैखिक इंटरपोलेशन का उपयोग किया जाता है। द्वि-घन प्रक्षेप, जो सहज परिणाम उत्पन्न करता है, में पिक्सेल के एक बड़े पड़ोस का उपयोग शामिल है। हालाँकि, ब्राउज़र आमतौर पर बाई-क्यूबिक इंटरपोलेशन को सीधे लागू नहीं करते हैं।

डाउन-स्टेपिंग दृष्टिकोण में छोटे पैमाने के कारक का उपयोग करके हर बार छवि का बार-बार आकार बदलना शामिल होता है। यह अंतर्निहित ब्राउज़र में रैखिक इंटरपोलेशन का उपयोग करते हुए द्वि-घन इंटरपोलेशन के व्यवहार की नकल करता है। "कैनवास"); var ctx = कैनवास.getContext('2d'); var img = नई छवि(); img.onload = फ़ंक्शन () { // छवि के अनुपात में आकार सेट करें कैनवास.ऊंचाई = कैनवास.चौड़ाई * (img.height / img.width); // चरण 1 - 50% तक आकार बदलें var oc = document.createElement('कैनवास'), Octx = oc.getContext('2d'); oc.width = img.width * 0.5; oc.ऊंचाई = img.ऊंचाई * 0.5; Octx.drawImage(img, 0, 0, oc.width, oc.height); // चरण दो Octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5); // चरण 3, अंतिम आकार में आकार बदलें ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5, 0, 0, कैनवास.चौड़ाई, कैनवास.ऊंचाई); } img.src = "//i.imgur.com/SHo6Fub.jpg";

यह कोड एक अस्थायी कैनवास, ओसी बनाता है, और पुनरावृत्त रूप से छवि का आकार बदलता है, अंततः इसे अंतिम कैनवास पर खींचता है। प्रत्येक आकार बदलने वाला चरण रैखिक इंटरपोलेशन का उपयोग करता है, लेकिन उन्हें संयोजित करने से, समग्र प्रभाव द्वि-घन इंटरपोलेशन का अनुमान लगाता है।

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img = new Image();

img.onload = function () {

    // set size proportional to image
    canvas.height = canvas.width * (img.height / img.width);

    // step 1 - resize to 50%
    var oc = document.createElement('canvas'),
        octx = oc.getContext('2d');

    oc.width = img.width * 0.5;
    oc.height = img.height * 0.5;
    octx.drawImage(img, 0, 0, oc.width, oc.height);

    // step 2
    octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5);

    // step 3, resize to final size
    ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5,
    0, 0, canvas.width, canvas.height);
}
img.src = "//i.imgur.com/SHo6Fub.jpg";
विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729599438 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3