diff --git a/server/src/converters/convert_image.js b/server/src/converters/convert_image.js index 4ad26c2ae..c9c391c92 100644 --- a/server/src/converters/convert_image.js +++ b/server/src/converters/convert_image.js @@ -9,6 +9,16 @@ import sharp from 'sharp'; * @returns {Promise} */ async function convertImage(buffer, options) { + if (options.extension === 'webp') { + return sharp(buffer) + .resize({ + fit: 'cover', + height: options.height, + width: options.width, + }) + .webp({ lossless: true }) + .toBuffer(); + } return sharp(buffer) .resize({ fit: 'cover', diff --git a/server/src/routes/api/image.js b/server/src/routes/api/image.js index 214d5980e..1690fee4b 100644 --- a/server/src/routes/api/image.js +++ b/server/src/routes/api/image.js @@ -9,7 +9,7 @@ import { convertImage } from '../../converters/convert_image'; import { UPLOAD_PATH } from '../../paths'; // 変換した画像の拡張子 -const EXTENSION = 'jpg'; +const EXTENSION = 'webp'; const router = Router(); @@ -29,7 +29,7 @@ router.post('/images', async (req, res) => { // 画像の縦サイズを指定する (undefined は元画像に合わせる) height: undefined, // 画像の横サイズを指定する (undefined は元画像に合わせる) - width: undefined, + width: 600, }); const filePath = path.resolve(UPLOAD_PATH, `./images/${imageId}.${EXTENSION}`);