const sharp = require('sharp'); /** * Resizes an image to standard 8K resolution (8192x4096) with 2:1 ratio and saves as JPEG * @param {string} inputPath - Path to the original uploaded file * @param {string} outputPath - Path to save the processed 8K JPEG image */ const resizeTo8K = async (inputPath, outputPath) => { try { await sharp(inputPath) .rotate() // Tự động xoay ảnh dựa trên EXIF orientation .resize(8192, 4096, { fit: 'fill' // Ensures the output is exactly 8192x4096 }) .jpeg({ quality: 85, progressive: false, // Tắt progressive để header đơn giản hơn cho piexifjs chromaSubsampling: '4:2:0' }) // Loại bỏ .withMetadata() để Sharp tạo ra file JPEG sạch nhất. // Điều này giúp piexifjs không bị lỗi "Given data is not jpeg". .toFile(outputPath); } catch (error) { throw new Error(`Sharp image processing failed: ${error.message}`); } }; module.exports = { resizeTo8K };