]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/image-utils.ts
Fix tests
[github/Chocobozzz/PeerTube.git] / server / helpers / image-utils.ts
index 0065f4210319866683fd931e9b8652276fe2aba4..b1c7d3d476c549c395dbb8ff8207fc469f21d52b 100644 (file)
@@ -1,17 +1,32 @@
 import 'multer'
-import * as sharp from 'sharp'
-import { unlinkPromise } from './core-utils'
+import { readFile, remove } from 'fs-extra'
+import { logger } from './logger'
+const Jimp = require('jimp')
 
 async function processImage (
-  physicalFile: { path: string },
+  path: string,
   destination: string,
-  newSize: { width: number, height: number }
+  newSize: { width: number, height: number },
+  keepOriginal = false
 ) {
-  await sharp(physicalFile.path)
+  if (path === destination) {
+    throw new Error('Jimp needs an input path different that the output path.')
+  }
+
+  logger.debug('Processing image %s to %s.', path, destination)
+
+  // Avoid sharp cache
+  const buf = await readFile(path)
+  const jimpInstance = await Jimp.read(buf)
+
+  await remove(destination)
+
+  await jimpInstance
     .resize(newSize.width, newSize.height)
-    .toFile(destination)
+    .quality(80)
+    .writeAsync(destination)
 
-  await unlinkPromise(physicalFile.path)
+  if (keepOriginal !== true) await remove(path)
 }
 
 // ---------------------------------------------------------------------------