adds width and height to uploads that match proper mime type, continues build to FileDetails

This commit is contained in:
James
2020-06-24 18:55:03 -04:00
parent b5f8178de2
commit a27f804b9c
15 changed files with 191 additions and 31 deletions

View File

@@ -0,0 +1,13 @@
function formatBytes(bytes, decimals = 0) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return `${parseFloat((bytes / (k ** i)).toFixed(dm))} ${sizes[i]}`;
}
module.exports = formatBytes;

View File

@@ -0,0 +1,6 @@
const imageSize = require('image-size');
const { promisify } = require('util');
const getImageSize = promisify(imageSize);
module.exports = getImageSize;

View File

@@ -0,0 +1,15 @@
const imageMIMETypes = require('./imageMIMETypes');
const getThumbnail = (mimeType, staticURL, filename, sizes, adminThumbnail) => {
if (imageMIMETypes.indexOf(mimeType) > -1) {
if (sizes?.[adminThumbnail]?.filename) {
return `${staticURL}/${sizes[adminThumbnail].filename}`;
}
return `${staticURL}/${filename}`;
}
return false;
};
module.exports = getThumbnail;

View File

@@ -0,0 +1,3 @@
const types = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml'];
module.exports = types;

View File

@@ -1,12 +1,9 @@
const fs = require('fs');
const sharp = require('sharp');
const sanitize = require('sanitize-filename');
const { promisify } = require('util');
const imageSize = require('image-size');
const getImageSize = require('./getImageSize');
const fileExists = require('./fileExists');
const sizeOf = promisify(imageSize);
function getOutputImage(sourceImage, size) {
const extension = sourceImage.split('.').pop();
const name = sanitize(sourceImage.substr(0, sourceImage.lastIndexOf('.')) || sourceImage);
@@ -33,7 +30,7 @@ module.exports = async function resizeAndSave(config, savedFilename, mimeType) {
const sourceImage = `${staticDir}/${savedFilename}`;
let sizes;
try {
const dimensions = await sizeOf(sourceImage);
const dimensions = await getImageSize(sourceImage);
sizes = imageSizes
.filter(desiredSize => desiredSize.width < dimensions.width)
.map(async (desiredSize) => {