আমার অভিজ্ঞতায়, এই উদাহরণটি পুনরায় আকারিত ছবি আপলোড করার জন্য সেরা সমাধান হয়েছে: https://zocada.com/compress-resize-images-javascript-browser/
এটি HTML5 ক্যানভাস বৈশিষ্ট্যটি ব্যবহার করে।
কোডটি এর মতো 'সরল':
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);
};
}
এই বিকল্পটির সাথে কেবলমাত্র একটি নেতিবাচক প্রভাব রয়েছে এবং এটি এক্সআইএফ ডেটা উপেক্ষা করার কারণে চিত্রের ঘূর্ণনের সাথে সম্পর্কিত। যা আমি এই মুহুর্তে কাজ করছি। আমি এটি সম্পন্ন করার পরে আপডেট হবে।
আরেকটি খারাপ দিক, সমর্থন শত্রু আইই / এজ এর অভাব, যা আমি পাশাপাশি কাজ করছি। যদিও উপরের লিঙ্কে তথ্য রয়েছে। উভয় ইস্যু জন্য।