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