aboutsummaryrefslogtreecommitdiff
path: root/src/server/ApiManagers/UploadManager.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-02 14:46:35 -0500
committerbobzel <zzzman@gmail.com>2023-12-02 14:46:35 -0500
commit6abda9e76cce35272ff73c3911af5aa8c18ce30b (patch)
treeccb3a2f4590d634c29244bfb594f98865ce9481e /src/server/ApiManagers/UploadManager.ts
parent24e06152089f650c4a3b1f9625a9c20b5e09199a (diff)
jimp cleanup
Diffstat (limited to 'src/server/ApiManagers/UploadManager.ts')
-rw-r--r--src/server/ApiManagers/UploadManager.ts58
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));
});