मेरे अनुभव में, यह उदाहरण एक संशोधित चित्र अपलोड करने के लिए सबसे अच्छा समाधान रहा है: https://zocada.com/compress-resize-images-javascript-browser/
इसमें एचटीएमएल 5 कैनवस फीचर का इस्तेमाल किया गया है।
कोड इस तरह 'सरल' है:
compress(e) {
const fileName = e.target.files[0].name;
const reader = new FileReader();
reader.readAsDataURL(e.target.files[0]);
reader.onload = event => {
const img = new Image();
img.src = event.target.result;
img.onload = () => {
const elem = document.createElement('canvas');
const width = Math.min(800, img.width);
const scaleFactor = width / img.width;
elem.width = width;
elem.height = img.height * scaleFactor;
const ctx = elem.getContext('2d');
// img.width and img.height will contain the original dimensions
ctx.drawImage(img, 0, 0, width, img.height * scaleFactor);
ctx.canvas.toBlob((blob) => {
const file = new File([blob], fileName, {
type: 'image/jpeg',
lastModified: Date.now()
});
}, 'image/jpeg', 1);
},
reader.onerror = error => console.log(error);
};
}
इस विकल्प के साथ केवल एक नकारात्मक पहलू है, और यह EXIF डेटा की अनदेखी के कारण छवि रोटेशन से संबंधित है। जो मैं इस समय काम कर रहा हूं। मेरे द्वारा किए जाने के बाद अपडेट हो जाएगा।
एक और नकारात्मक पहलू, फाइट आईई / एज सपोर्ट की कमी है, जिस पर मैं काम कर रहा हूं। यद्यपि उपरोक्त लिंक में जानकारी है। दोनों मुद्दों के लिए।