From f8883c1fe82fd357c8c0d30b68488534a7e879fd Mon Sep 17 00:00:00 2001 From: Knight Date: Sat, 28 Dec 2024 11:38:50 -0500 Subject: [PATCH] Enhance image processing in generateSite.js by adding detailed logging for original and processed images, including metadata and buffer size. Improved error handling for image processing and ensured proper serving of original images when parameters are not provided. This update aids in debugging and provides better insights into image handling performance. --- generateSite.js | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/generateSite.js b/generateSite.js index e9d3fcc..ec6ced0 100644 --- a/generateSite.js +++ b/generateSite.js @@ -148,12 +148,26 @@ async function serveStaticSite(port = 3000) { if (url.pathname.startsWith('/images/')) { // Serve directly from images folder filePath = url.pathname.slice(1); // Remove leading slash + console.log(`Request for image: ${filePath}`); + console.log(`Parameters: quality=${quality}, width=${width}`); // If quality parameter is present, serve a resized version if (quality && width && (filePath.endsWith('.jpg') || filePath.endsWith('.jpeg') || filePath.endsWith('.png'))) { try { const Sharp = (await import('sharp')).default; - const image = await Sharp(filePath) + + // Get original image info + const originalImage = await Sharp(filePath); + const originalMetadata = await originalImage.metadata(); + console.log('Original image metadata:', { + width: originalMetadata.width, + height: originalMetadata.height, + size: originalMetadata.size, + format: originalMetadata.format + }); + + // Process the image + const processedImage = await Sharp(filePath) .resize({ width: parseInt(width), height: parseInt(width), @@ -162,19 +176,36 @@ async function serveStaticSite(port = 3000) { .jpeg({ quality: parseInt(quality), progressive: true - }) - .toBuffer(); + }); + + // Get processed image info + const processedMetadata = await processedImage.metadata(); + console.log('Processed image metadata:', { + width: processedMetadata.width, + height: processedMetadata.height, + format: processedMetadata.format + }); + + // Convert to buffer and get size + const buffer = await processedImage.toBuffer(); + console.log('Processed image buffer size:', buffer.length); res.writeHead(200, { 'Content-Type': 'image/jpeg', - 'Cache-Control': 'public, max-age=31536000' + 'Cache-Control': 'public, max-age=31536000', + 'Content-Length': buffer.length }); - res.end(image); + res.end(buffer); return; } catch (error) { console.error('Error processing image:', error); // Fall through to serve original image } + } else { + // Log info for original image request + console.log('Serving original image'); + const stats = await fs.stat(filePath); + console.log('Original file size:', stats.size); } } else { // Serve from public folder