diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/DashUploadUtils.ts | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index b66651ef2..d4bcd22ae 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -248,13 +248,12 @@ export namespace DashUploadUtils { force: true }; - export async function outputResizedImages(readStreamSource: () => Stream | Promise<Stream>, outputPath: string, fileName: string, ext: string) { + export async function outputResizedImages(streamProvider: () => Stream | Promise<Stream>, outputPath: string, fileName: string, ext: string) { const writtenFiles: { [suffix: string]: string } = {}; for (const { resizer, suffix } of resizers(ext)) { - const resolved = writtenFiles[suffix] = InjectSize(fileName, suffix); + const resolvedOutputPath = path.resolve(outputPath, writtenFiles[suffix] = InjectSize(fileName, suffix)); await new Promise<void>(async (resolve, reject) => { - const writeStream = createWriteStream(path.resolve(outputPath, resolved)); - const source = readStreamSource(); + const source = streamProvider(); let readStream: Stream; if (source instanceof Promise) { readStream = await source; @@ -264,9 +263,7 @@ export namespace DashUploadUtils { if (resizer) { readStream = readStream.pipe(resizer.withMetadata()); } - const out = readStream.pipe(writeStream); - out.on("close", resolve); - out.on("error", reject); + readStream.pipe(createWriteStream(resolvedOutputPath)).on("close", resolve).on("error", reject); }); } return writtenFiles; @@ -275,8 +272,8 @@ export namespace DashUploadUtils { function resizers(ext: string): DashUploadUtils.ImageResizer[] { return [ { suffix: SizeSuffix.Original }, - ...Object.values(DashUploadUtils.Sizes).map(size => { - let initial: sharp.Sharp | undefined = sharp().resize(size.width, undefined, { withoutEnlargement: true }); + ...Object.values(DashUploadUtils.Sizes).map(({ suffix, width }) => { + let initial: sharp.Sharp | undefined = sharp().resize(width, undefined, { withoutEnlargement: true }); if (pngs.includes(ext)) { initial = initial.png(pngOptions); } else if (jpgs.includes(ext)) { @@ -290,7 +287,7 @@ export namespace DashUploadUtils { } return { resizer: initial, - suffix: size.suffix + suffix }; }) ]; |