diff options
author | bobzel <zzzman@gmail.com> | 2023-12-02 14:46:35 -0500 |
---|---|---|
committer | bobzel <zzzman@gmail.com> | 2023-12-02 14:46:35 -0500 |
commit | 6abda9e76cce35272ff73c3911af5aa8c18ce30b (patch) | |
tree | ccb3a2f4590d634c29244bfb594f98865ce9481e /src/server/ApiManagers/UploadManager.ts | |
parent | 24e06152089f650c4a3b1f9625a9c20b5e09199a (diff) |
jimp cleanup
Diffstat (limited to 'src/server/ApiManagers/UploadManager.ts')
-rw-r--r-- | src/server/ApiManagers/UploadManager.ts | 58 |
1 files changed, 22 insertions, 36 deletions
diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts index 478f7da3d..83644e564 100644 --- a/src/server/ApiManagers/UploadManager.ts +++ b/src/server/ApiManagers/UploadManager.ts @@ -1,6 +1,6 @@ import * as formidable from 'formidable'; import { createReadStream, createWriteStream, unlink, writeFile } from 'fs'; -import { basename, dirname, extname, normalize } from 'path'; +import * as path from 'path'; import Jimp from 'jimp'; import { filesDirectory, publicDirectory } from '..'; import { retrocycle } from '../../decycler/decycler'; @@ -13,7 +13,6 @@ import ApiManager, { Registration } from './ApiManager'; import { SolrManager } from './SearchManager'; import v4 = require('uuid/v4'); import { DashVersion } from '../../fields/DocSymbols'; -import { JPEGStream } from 'canvas'; const AdmZip = require('adm-zip'); const imageDataUri = require('image-data-uri'); const fs = require('fs'); @@ -30,11 +29,11 @@ export enum Directory { } export function serverPathToFile(directory: Directory, filename: string) { - return normalize(`${filesDirectory}/${directory}/${filename}`); + return path.normalize(`${filesDirectory}/${directory}/${filename}`); } export function pathToDirectory(directory: Directory) { - return normalize(`${filesDirectory}/${directory}`); + return path.normalize(`${filesDirectory}/${directory}`); } export function clientPathToFile(directory: Directory, filename: string) { @@ -256,26 +255,20 @@ export default class UploadManager extends ApiManager { if (!entryName.startsWith('files/')) { return; } - const extension = extname(entryName); + const extension = path.extname(entryName); const pathname = publicDirectory + '/' + entry.entryName; const targetname = publicDirectory + '/' + entryName; try { zip.extractEntryTo(entry.entryName, publicDirectory, true, false); createReadStream(pathname).pipe(createWriteStream(targetname)); - if (AcceptableMedia.imageFormats.includes(extension)) { - [ - { size: 100, suffix: SizeSuffix.Small }, - { size: 400, suffix: SizeSuffix.Medium }, - { size: 900, suffix: SizeSuffix.Large }, - ].forEach(resizer => - Jimp.read(pathname).then(img => - img - .resize(resizer.size, Jimp.AUTO) // - .write(targetname.replace('_o' + extension, resizer.suffix + extension)) - ) - ); - } - unlink(pathname, () => {}); + Jimp.read(pathname).then(img => { + DashUploadUtils.imageResampleSizes(extension).forEach(({ width, suffix }) => { + const outputPath = InjectSize(targetname, suffix); + if (!width) createReadStream(pathname).pipe(createWriteStream(outputPath)); + else img = img.resize(width, Jimp.AUTO).write(outputPath); + }); + unlink(pathname, () => {}); + }); } catch (e) { console.log(e); } @@ -347,23 +340,16 @@ export default class UploadManager extends ApiManager { .map((f: any) => fs.unlinkSync(path + f)); } return imageDataUri.outputFile(uri, serverPathToFile(Directory.images, InjectSize(filename, origSuffix))).then((savedName: string) => { - const ext = extname(savedName).toLowerCase(); - const { pngs, jpgs } = AcceptableMedia; - if (!pngs.includes(ext) && !jpgs.includes(ext)) { - (!origSuffix - ? [{ size: 400, suffix: SizeSuffix.Medium }] - : [ - { size: 100, suffix: SizeSuffix.Small }, - { size: 400, suffix: SizeSuffix.Medium }, - { size: 900, suffix: SizeSuffix.Large }, - ] - ).forEach(resizer => { - Jimp.read(savedName).then(img => - img - .resize(resizer.size, Jimp.AUTO) // - .write(serverPathToFile(Directory.images, InjectSize(filename, resizer.suffix) + ext)) - ); - }); + const ext = path.extname(savedName).toLowerCase(); + if (AcceptableMedia.imageFormats.includes(ext)) { + Jimp.read(savedName).then(img => + (!origSuffix ? [{ width: 400, suffix: SizeSuffix.Medium }] : Object.values(DashUploadUtils.Sizes)) // + .forEach(({ width, suffix }) => { + const outputPath = InjectSize(filename, suffix); + if (!width) createReadStream(savedName).pipe(createWriteStream(outputPath)); + else img = img.resize(width, Jimp.AUTO).write(outputPath); + }) + ); } res.send(clientPathToFile(Directory.images, filename + ext)); }); |