Untitled
unknown
javascript
5 months ago
2.0 kB
6
Indexable
import webp from 'webp-converter'; import { Buffer } from 'buffer'; export default async function convertToWebp({ imageBuffer, mimeType }, { logging }) { let isSuccess = true; try { const maxBufferSize = 10485760; // 10MB // Log input buffer type and size for debugging logging.log(`Input buffer type: ${typeof imageBuffer}`); logging.log(`Input buffer size: ${Buffer.byteLength(imageBuffer)} bytes`); if (Buffer.byteLength(imageBuffer) > maxBufferSize) { throw new Error('Input buffer size exceeds the limit of 10MB.'); } // Determine the file type from the mimeType const fileType = mimeType.split('/')[1]; // Convert buffer to WebP format using webp-converter's buffer2webpbuffer const result = await webp.buffer2webpbuffer(imageBuffer, fileType, "-q 80") .then((res) => { if (typeof res === 'string') { logging.log('WebP conversion finished.'); return Buffer.from(res, 'base64'); } else { throw new Error('WebP conversion returned an unexpected result format.'); } }) .catch((error) => { logging.log(`WebP conversion promise rejected: ${error.message}`); throw new Error('WebP conversion failed.'); }); // Additional validation for the result buffer if (!result || !Buffer.isBuffer(result)) { logging.log('WebP conversion returned an invalid buffer.'); throw new Error('WebP conversion failed or did not return a valid buffer.'); } logging.log('WebP conversion successful.'); return { webpBuffer: result, isSuccess }; } catch (error) { isSuccess = false; logging.log(`WebP conversion error: ${error.message}`); return { webpBuffer: null, isSuccess }; } }
Editor is loading...
Leave a Comment