Fix orientation when creating thumbnails

- use minimum size  as well as percentage
This commit is contained in:
Stefan Forstenlechner 2022-04-10 23:08:02 +02:00
parent c5a7999c1a
commit e96bd7c25e
1 changed files with 11 additions and 12 deletions

View File

@ -4,29 +4,28 @@ import path from "path";
import { publicPath, thumbnailPath, thumbnailPublicPath } from "./paths";
const percentage = 25;
const minimumPixelForThumbnail = 1000;
const minimumPixelForThumbnail = 1024;
export const createThumbnailAsyncForImage = (image: string) => {
sharp(`${publicPath}${image}`)
.metadata()
.then((info) => {
let width = Math.round((info.width * percentage) / 100);
let height = Math.round((info.height * percentage) / 100);
// no thumbnail if both sides are smaller than minimumPixelForThumbnail
if (
info.width <= minimumPixelForThumbnail &&
info.height <= minimumPixelForThumbnail
) {
width = info.width;
height = info.height;
}
const width = Math.max(
Math.min(info.width, minimumPixelForThumbnail),
Math.round((info.width * percentage) / 100)
);
const height = Math.max(
Math.min(info.height, minimumPixelForThumbnail),
Math.round((info.height * percentage) / 100)
);
fs.mkdir(
thumbnailPublicPath + path.dirname(image),
{ recursive: true },
() => {
sharp(`${publicPath}${image}`)
.resize(width, height)
.withMetadata()
.resize(info.width > info.height ? { width } : { height })
.toFile(`${thumbnailPublicPath}${image}`);
}
);