diff options
author | bobzel <zzzman@gmail.com> | 2023-12-02 15:53:28 -0500 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2023-12-02 15:53:28 -0500 |
commit | 9c7e055a2cf7ca5bc517edd3a9f44e128ec40ff3 (patch) | |
tree | 478af3a38d932bcee56efd455bc371751a6766b6 /src/server/DashUploadUtils.ts | |
parent | 6abda9e76cce35272ff73c3911af5aa8c18ce30b (diff) |
fixed jimp upload to not hang when error occurs. fied imagebox to show original image if resized images fail.
Diffstat (limited to 'src/server/DashUploadUtils.ts')
-rw-r--r-- | src/server/DashUploadUtils.ts | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index 6cad49033..eb6c080ef 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -594,18 +594,25 @@ export namespace DashUploadUtils { * @param outputDirectory the directory to output to, usually Directory.Images * @returns a map with suffixes as keys and resized filenames as values. */ - export function outputResizedImages(sourcePath: string, outputFileName: string, outputDirectory: string) { + export async function outputResizedImages(sourcePath: string, outputFileName: string, outputDirectory: string) { const writtenFiles: { [suffix: string]: string } = {}; - return Jimp.read(sourcePath).then(async img => { - await Promise.all( - imageResampleSizes(path.extname(outputFileName)).map(({ width, suffix }) => { - const outputPath = path.resolve(outputDirectory, (writtenFiles[suffix] = InjectSize(outputFileName, suffix))); - if (!width) return new Promise<void>(res => createReadStream(sourcePath).pipe(createWriteStream(outputPath)).on('close', res)); - else img = img.resize(width, Jimp.AUTO).write(outputPath); - }) // prettier-ignore - ); - return writtenFiles; - }); + const sizes = imageResampleSizes(path.extname(outputFileName)); + const outputPath = (suffix: SizeSuffix) => path.resolve(outputDirectory, (writtenFiles[suffix] = InjectSize(outputFileName, suffix))); + await Promise.all( + sizes.filter(({ width }) => !width).map(({ suffix }) => + new Promise<void>(res => createReadStream(sourcePath).pipe(createWriteStream(outputPath(suffix))).on('close', res)) + )); // prettier-ignore + return Jimp.read(sourcePath) + .then(async img => { + await Promise.all( sizes.filter(({ width }) => width) .map(({ width, suffix }) => + img = img.resize(width, Jimp.AUTO).write(outputPath(suffix)) + )); // prettier-ignore + return writtenFiles; + }) + .catch(e => { + console.log('ERROR' + e); + return writtenFiles; + }); } /** |