Type toActivityPubObject functions
[oweals/peertube.git] / server / helpers / image-utils.ts
1 import 'multer'
2 import * as sharp from 'sharp'
3 import { readFile, remove } from 'fs-extra'
4 import { logger } from './logger'
5
6 async function processImage (
7   path: string,
8   destination: string,
9   newSize: { width: number, height: number },
10   keepOriginal = false
11 ) {
12   if (path === destination) {
13     throw new Error('Sharp needs an input path different that the output path.')
14   }
15
16   logger.debug('Processing image %s to %s.', path, destination)
17
18   // Avoid sharp cache
19   const buf = await readFile(path)
20   const sharpInstance = sharp(buf)
21
22   await remove(destination)
23
24   await sharpInstance
25     .resize(newSize.width, newSize.height)
26     .toFile(destination)
27
28   if (keepOriginal !== true) await remove(path)
29 }
30
31 // ---------------------------------------------------------------------------
32
33 export {
34   processImage
35 }