वेब विकास में इमेज क्रॉपिंग एक मौलिक कार्य है। जबकि कई लाइब्रेरी उन्नत इमेज मैनिपुलेशन क्षमताएँ प्रदान करती हैं, HTML5 कैनवास ब्राउज़र के अंदर सीधे इसे प्राप्त करने के लिए एक आश्चर्यजनक रूप से कुशल और सरल विधि प्रदान करता है, बाहरी निर्भरताओं की आवश्यकता को समाप्त करता है। यह ट्यूटोरियल आपको जावास्क्रिप्ट और HTML कैनवास तत्व का उपयोग करके इमेज क्रॉपिंग की प्रक्रिया के माध्यम से मार्गदर्शन करता है।
विषयसूची
- HTML सेट करना
- इमेज डेटा लोड करना और एक्सेस करना
- क्रॉप क्षेत्र को परिभाषित करना
- क्रॉपिंग लॉजिक को लागू करना
- उपयोगकर्ता इंटरैक्शन सक्षम करना (वैकल्पिक)
- क्रॉप की गई इमेज को डाउनलोड करना (वैकल्पिक)
HTML सेट करना
मौलिक HTML संरचना स्थापित करके शुरू करें। इसमें मूल इमेज प्रदर्शित करने के लिए एक <img>
तत्व, एक <canvas>
तत्व जिसमें क्रॉप की गई इमेज रेंडर की जाएगी, और वैकल्पिक रूप से, उपयोगकर्ता इंटरैक्शन के लिए इनपुट फ़ील्ड (जैसे, क्रॉप आयाम निर्दिष्ट करने के लिए) शामिल हैं।
<img id="originalImage" src="your-image.jpg" alt="मूल इमेज">
<canvas id="croppedCanvas"></canvas>
"your-image.jpg"
को अपनी इमेज फ़ाइल के वास्तविक पथ से बदलना याद रखें।
इमेज डेटा लोड करना और एक्सेस करना
क्रॉपिंग प्रक्रिया शुरू करने से पहले, इमेज को लोड किया जाना चाहिए और उसका डेटा एक्सेस किया जाना चाहिए। जावास्क्रिप्ट इसे कुशलतापूर्वक संभालता है। onload
इवेंट सुनिश्चित करता है कि कोई भी प्रोसेसिंग शुरू होने से पहले इमेज पूरी तरह से लोड हो गई है।
const originalImage = document.getElementById('originalImage');
const croppedCanvas = document.getElementById('croppedCanvas');
const ctx = croppedCanvas.getContext('2d');
originalImage.onload = () => {
croppedCanvas.width = originalImage.width;
croppedCanvas.height = originalImage.height;
//आगे क्रॉपिंग लॉजिक यहाँ जाएगा।
};
यह कोड स्निपेट इमेज और कैनवास तत्वों के संदर्भ प्राप्त करता है, कैनवास का 2D रेंडरिंग संदर्भ प्राप्त करता है, और मूल इमेज के आयामों से मिलान करने के लिए कैनवास आयाम सेट करता है।
क्रॉप क्षेत्र को परिभाषित करना
क्रॉप की जाने वाली इमेज के क्षेत्र को परिभाषित किया जाना चाहिए। इसे प्रोग्रामेटिक रूप से या उपयोगकर्ता इंटरैक्शन को शामिल करके प्राप्त किया जा सकता है (वैकल्पिक अनुभाग में विस्तृत)। अभी के लिए, आइए हार्डकोडेड मानों का उपयोग करके क्रॉप क्षेत्र को परिभाषित करें:
const x = 50; // प्रारंभिक x-निर्देशांक
const y = 50; // प्रारंभिक y-निर्देशांक
const width = 200; // क्रॉप क्षेत्र की चौड़ाई
const height = 150; // क्रॉप क्षेत्र की ऊँचाई
क्रॉपिंग लॉजिक को लागू करना
कोर क्रॉपिंग लॉजिक कैनवास 2D संदर्भ के drawImage()
विधि का उपयोग करता है। यह विधि स्रोत इमेज के एक विशिष्ट भाग को कैनवास पर खींचने में सक्षम बनाता है।
originalImage.onload = () => {
croppedCanvas.width = originalImage.width;
croppedCanvas.height = originalImage.height;
ctx.drawImage(originalImage, x, y, width, height, 0, 0, width, height);
};
यह कोड इमेज के एक आयताकार खंड को (x, y) निर्देशांकों पर शुरू करते हुए निर्दिष्ट चौड़ाई और ऊँचाई के साथ, (0, 0) पर कैनवास पर समान आयामों के साथ खींचता है। यह प्रभावी रूप से इमेज को क्रॉप करता है।
उपयोगकर्ता इंटरैक्शन सक्षम करना (वैकल्पिक)
अधिक इंटरैक्टिव अनुभव के लिए, उपयोगकर्ताओं को माउस ईवेंट का उपयोग करके क्रॉपिंग क्षेत्र का चयन करने की अनुमति दें। माउस आंदोलनों को ट्रैक करने और क्रॉपिंग क्षेत्र को गतिशील रूप से अपडेट करने के लिए अधिक जटिल कोड की आवश्यकता है। इसमें आम तौर पर mousedown
, mousemove
और mouseup
ईवेंट के लिए इवेंट लिसनर जोड़ना शामिल होता है। (संक्षिप्तता के लिए कार्यान्वयन विवरण छोड़े गए हैं, लेकिन कई ऑनलाइन संसाधनों में आसानी से उपलब्ध हैं।)
क्रॉप की गई इमेज को डाउनलोड करना (वैकल्पिक)
उपयोगकर्ताओं को क्रॉप की गई इमेज को डाउनलोड करने में सक्षम बनाने के लिए, एक छिपे हुए <a>
तत्व और कैनवास के toDataURL()
विधि का उपयोग करें:
const downloadLink = document.createElement('a');
downloadLink.download = 'croppedImage.png';
downloadLink.href = croppedCanvas.toDataURL();
downloadLink.click();
यह एक लिंक तत्व बनाता है, डाउनलोड फ़ाइल नाम सेट करता है, कैनवास सामग्री का डेटा URL पुनः प्राप्त करता है, और डाउनलोड शुरू करने के लिए एक क्लिक का अनुकरण करता है।
यह व्यापक उदाहरण दर्शाता है कि जावास्क्रिप्ट और HTML कैनवास का उपयोग करके इमेज को कैसे क्रॉप किया जाए। क्रॉपिंग क्षेत्र को नियंत्रित करने के लिए x
, y
, width
और height
चर को समायोजित करना याद रखें। उपयोगकर्ता इंटरैक्शन और डाउनलोड क्षमताओं को जोड़ने से उपयोगकर्ता अनुभव में काफी वृद्धि होती है, जबकि कोर क्रॉपिंग लॉजिक अपरिवर्तित रहता है। उत्पादन-तैयार कार्यान्वयन के लिए इमेज लोडिंग विफलताओं के लिए मजबूत त्रुटि हैंडलिंग महत्वपूर्ण है।