टी एल; डॉ;
क्या अपलोड करने से पहले एक छवि (अधिकतर jpeg, png और gif) को सीधे ब्राउज़र-साइड पर संपीड़ित करने का एक तरीका है? मुझे पूरा यकीन है कि जावास्क्रिप्ट ऐसा कर सकती है, लेकिन मुझे इसे हासिल करने का कोई रास्ता नहीं मिल रहा है।
यहां पूरा परिदृश्य मैं लागू करना चाहता हूं:
- उपयोगकर्ता मेरी वेबसाइट पर जाता है, और एक
input type="file"
तत्व के माध्यम से एक छवि चुनता है, - इस छवि को जावास्क्रिप्ट के माध्यम से पुनर्प्राप्त किया जाता है, हम कुछ सत्यापन करते हैं जैसे कि सही फ़ाइल प्रारूप, अधिकतम फ़ाइल आकार आदि।
- यदि प्रत्येक चीज़ ठीक है, तो छवि का पूर्वावलोकन पृष्ठ पर प्रदर्शित होता है,
- उपयोगकर्ता कुछ बुनियादी ऑपरेशन कर सकता है जैसे कि छवि को 90 ° / -90 ° से घुमाएं, इसे पूर्व-निर्धारित अनुपात के अनुसार क्रॉप करें, या उपयोगकर्ता दूसरी छवि अपलोड कर सकता है और चरण 1 पर वापस आ सकता है,
- जब उपयोगकर्ता संतुष्ट हो जाता है, तो संपादित की गई छवि को तब संपीड़ित किया जाता है और स्थानीय रूप से "सहेजा" जाता है (फ़ाइल में सहेजा नहीं जाता है, लेकिन ब्राउज़र मेमोरी / पेज में, -)
- उपयोगकर्ता नाम, आयु आदि जैसे डेटा के साथ एक फॉर्म भरता है,
- उपयोगकर्ता "फिनिश" बटन पर क्लिक करें, फिर डेटा + संपीड़ित छवि वाला फॉर्म सर्वर (AJAX के बिना) के लिए भेजा जाता है,
अंतिम चरण तक की पूरी प्रक्रिया क्लाइंट की तरफ होनी चाहिए, और नवीनतम क्रोम और फ़ायरफ़ॉक्स, सफारी 5+ और आईई 8+ पर संगत होनी चाहिए । यदि संभव हो, तो केवल जावास्क्रिप्ट का उपयोग किया जाना चाहिए (लेकिन मुझे पूरा यकीन है कि यह संभव नहीं है)।
मैंने अभी कुछ भी कोड नहीं किया है, लेकिन मैंने इसके बारे में पहले ही सोच लिया है। फ़ाइल एपीआई के माध्यम से स्थानीय रूप से फ़ाइल पढ़ना संभव है , कैनवस तत्व का उपयोग करके छवि पूर्वावलोकन और संपादन किया जा सकता है , लेकिन मुझे छवि संपीड़न भाग करने का कोई तरीका नहीं मिल सकता है ।
Html5please.com और caniuse.com के अनुसार , उन ब्राउज़र का समर्थन करना काफी कठिन है (IE के लिए धन्यवाद), लेकिन FlashCanvas और FileReader जैसे पॉलीफिल का उपयोग करके किया जा सकता है ।
दरअसल, लक्ष्य फ़ाइल आकार को कम करना है, इसलिए मैं छवि संपीड़न को एक समाधान के रूप में देखता हूं। लेकिन, मुझे पता है कि अपलोड की गई छवियां मेरी वेबसाइट पर, हर बार उसी स्थान पर प्रदर्शित होने वाली हैं, और मुझे इस प्रदर्शन क्षेत्र का आयाम पता है (उदाहरण। 200x400)। इसलिए, मैं उन आयामों को फिट करने के लिए छवि का आकार बदल सकता हूं, इस प्रकार फ़ाइल का आकार कम कर सकता हूं। मुझे नहीं पता कि इस तकनीक के लिए संपीड़न अनुपात क्या होगा।
तुम क्या सोचते हो ? क्या आपके पास मुझे बताने की कोई सलाह है? क्या आप जावास्क्रिप्ट में एक छवि ब्राउज़र-साइड को संपीड़ित करने का कोई तरीका जानते हैं? आपके उत्तर के लिए धन्यवाद।