Fix orientation when creating thumbnails
- use minimum size as well as percentage
This commit is contained in:
parent
c5a7999c1a
commit
e96bd7c25e
|
|
@ -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}`);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue