Working display and resize

Vic
Vic 2 years ago
parent 7f83cb6d16
commit 9af57a4e49

2
.gitignore vendored

@ -41,7 +41,7 @@ bower_components
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
build/
# Dependency directories
node_modules/

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -1,26 +1,58 @@
import express from "express"
import path from "path"
import fs from "fs"
import path from "path"
import sharp from "sharp"
const image = express.Router();
image.get('/',
async (req: express.Request, res: express.Response): Promise<void> => {
let filename = req.query.filename as string;
try {
let filePath = path.resolve("images/full", `${filename}.jpg`);
console.log('FILE PATH', filePath);
if (!fs.existsSync(filePath)) {
res.status(404).send("Image don't exist! Try another name");
return;
}
res.sendFile(filePath);
} catch (err) {
res.status(404).send(`An error occured`);
}
//res.send('Welcome to image route please add parametres in the url');
})
const resizeImg = async (width: number, height: number, inputimgPath: string, fileName: string): Promise<string> => {
// output file for resized img
let outputImg = path.resolve("images/thumb", `${fileName}.jpg`);
await sharp(path.resolve(inputimgPath))
.resize(width, height)
.toFormat("jpeg")
.jpeg({
quality: 100,
mozjpeg: true
})
.toFile(path.resolve(outputImg))
return outputImg
}
image.get('/', async (req: express.Request, res: express.Response): Promise<void> => {
let fileName = req.query.filename as string;
let width = parseInt(req.query.width as string);
let height = parseInt(req.query.height as string);
// fetch file from server
let inputimgPath: string = path.resolve("images/full", `${fileName}.jpg`);
// check if the inputFile exist
if (!fs.existsSync(inputimgPath)) {
res.status(404).send("Image not found");
return;
}
// display image if we have fileName, width, height attributs in the request
if (fileName && width && height) {
//resize image
let outputImg: string = await resizeImg(width, height, inputimgPath, fileName);
res.sendFile(outputImg);
} else if (fileName) {
// display original image if we only have filename parameter in the request
res.sendFile(inputimgPath);
}
})
export default image;

@ -74,7 +74,7 @@
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
"strict": false, /* Enable all strict type-checking options. */
"noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */

Loading…
Cancel
Save