टी एल; डॉ;कैसे ब्राउज़र में Javascript के माध्यम से एक छवि को संपीड़ित करने के?
क्या इसे अपलोड करने से पहले एक छवि (ज्यादातर जेपीईजी, पीएनजी और जीआईएफ) सीधे ब्राउज़र-पक्ष को संपीड़ित करने का कोई तरीका है? मुझे यकीन है कि जावास्क्रिप्ट यह कर सकता है, लेकिन मुझे इसे प्राप्त करने का कोई तरीका नहीं मिल रहा है।
यहाँ पूर्ण परिदृश्य मैं लागू करने के लिए चाहते हैं क्या है:,
- उपयोगकर्ता अपनी वेबसाइट पर चला जाता है, और एक
input type="file"
तत्व के माध्यम से एक छवि का चयन - इस छवि जावास्क्रिप्ट के माध्यम से लिया गया है, हम करते हैं कुछ सत्यापन जैसे कि सही फ़ाइल प्रारूप, अधिकतम फ़ाइल आकार इत्यादि,
- यदि हर चीज ठीक है, तो छवि का पूर्वावलोकन पृष्ठ पर प्रदर्शित होता है,
- उपयोगकर्ता कुछ बुनियादी संचालन कर सकता है जैसे उपयोगकर्ता के रूप में द्वारा 90 °/-90 ° छवि को घुमाने, फसल यह एक पूर्व निर्धारित अनुपात निम्नलिखित, आदि, या उपयोगकर्ता एक और छवि अपलोड करें और लौट सकते हैं 1 कदम,
- उपयोगकर्ता संतुष्ट है जब, संपादित छवि तो है संपीड़ित और "सहेजा गया" स्थानीय रूप से (फ़ाइल में सहेजा नहीं गया है, लेकिन ब्राउज़र मेमोरी/पेज में), -
- उपयोगकर्ता नाम, आयु आदि,
- जैसे डेटा के साथ एक फॉर्म भरें, उपयोगकर्ता "फिनिश" पर क्लिक करें बटन, तो प्रपत्र datas + संकुचित छवि युक्त (AJAX) के बिना सर्वर के लिए भेजा जाता है,
अंतिम चरण के लिए पूर्ण प्रक्रिया में तेजी ग्राहक के पक्ष से किया जाना चाहिए, और नवीनतम Chrome और Firefox पर संगत होना चाहिए , सफारी 5 + और आईई 8। यदि संभव हो, तो केवल जावास्क्रिप्ट का उपयोग किया जाना चाहिए (लेकिन मुझे पूरा यकीन है कि यह संभव नहीं है)।
मैं कुछ भी कोड गए नहीं अभी, लेकिन मैं इसके बारे में पहले से ही सोचा है। फ़ाइल स्थानीय रूप से पढ़ने File API के माध्यम से संभव है, छवि पूर्वावलोकन और संपादन Canvas तत्व का उपयोग किया जा सकता है, लेकिन मैं छवि संपीड़न हिस्सा करने के लिए एक रास्ता नहीं मिल रहा।
html5please.com और caniuse.com के अनुसार, उन ब्राउज़र का समर्थन काफी कठिन (आईई करने के लिए धन्यवाद) है, लेकिन FlashCanvas और FileReader के रूप में इस तरह के polyfill का उपयोग किया जा सकता है।
दरअसल, लक्ष्य फ़ाइल आकार को कम करना है, इसलिए मुझे समाधान के रूप में छवि संपीड़न दिखाई देता है। लेकिन, मुझे पता है कि अपलोड की गई छवियों को मेरी वेबसाइट पर हर बार एक ही स्थान पर प्रदर्शित किया जा रहा है, और मुझे इस प्रदर्शन क्षेत्र (जैसे 200x400) का आयाम पता है। इसलिए, मैं उन आयामों को फिट करने के लिए छवि का आकार बदल सकता हूं, इस प्रकार फ़ाइल आकार को कम कर सकता हूं। मुझे नहीं पता कि इस तकनीक के लिए संपीड़न अनुपात क्या होगा।
आपको क्या लगता है? क्या आपको मुझे बताने की कोई सलाह है? क्या आप जावास्क्रिप्ट में एक छवि ब्राउज़र-पक्ष को संपीड़ित करने के किसी भी तरीके से जानते हैं? आपके उत्तरों के लिए धन्यवाद।
"केवल जावास्क्रिप्ट इस्तेमाल किया जाना चाहिए ** (लेकिन मैं यकीन है कि यह संभव नहीं है हूँ) ** ** "शायद आप 1 9 80 की तरह प्रोग्रामिंग को रोक सकते हैं जहां यह संभव नहीं है, और 2017 की तरह प्रोग्रामिंग शुरू करना जहां यह संभव है। :) –