Welcome to Indonesia Pavilion 2025, !
{
const files = Array.from(event.target.files);
const compressedFiles = [];
const dt = new DataTransfer();
files.forEach(file => {
// Calculate quality based on file size to achieve ~300KB
const targetSize = 300 * 1024; // 300KB
const fileSize = file.size;
// If file is already below target size, use high quality
const quality = fileSize <= targetSize ? 0.95 : Math.min(0.9, Math.max(0.3, Math.sqrt(targetSize / fileSize)));
// Convert any image format to JPEG for quality compression
const jpegFile = new File([file], file.name.replace(/\.[^/.]+$/, '.jpg'), {
type: 'image/jpeg',
lastModified: Date.now(),
});
new Compressor(jpegFile, {
quality: quality,
convertSize: 0, // Convert all images to JPEG
success: (compressedBlob) => {
const compressedFile = new File([compressedBlob], file.name.replace(/\.[^/.]+$/, '.jpg'), {
type: 'image/jpeg',
lastModified: Date.now(),
});
dt.items.add(compressedFile);
compressedFiles.push(compressedFile);
photo = compressedFiles[0];
event.target.files = dt.files;
},
error(err) {
console.error(err.message);
}
});
});
}">