Есть ли свойство знать, находится ли изображение по вертикали или горизонтали в Jimp? - PullRequest
0 голосов
/ 12 мая 2019

Я делаю код для нанесения водяного знака на изображения. Единственная проблема заключается в том, что некоторые изображения находятся в вертикальном режиме, а другие в горизонтальном режиме. Из-за этого, вертикальные изображения обрезаются в квадрате и добавляют черный фон вокруг квадрата.

Я ничего не нашел. Я использую image.composite следующим образом: https://github.com/oliver-moran/jimp/issues/175#issuecomment-255878441, но это не решает мою проблему. Я изменяю размер изображения, которое идет на фоновом изображении.

Мой фактический код:

let jimp = require("Jimp")
let images = require("fs").readdirSync("./images")
images.forEach(image => {
    let p1 = jimp.read("./images/"+image.split("/").pop());
    Promise.all([p1, p2]).then(imgs => {
        imgs[1].resize(imgs[0].getWidth() > imgs[0].getHeight() ? imgs[0].getWidth() / 50 * 4.166666666666667 * 1.75 : imgs[0].getHeight() / 50 * 4.166666666666667* 1.75, 
            imgs[0].getWidth() > imgs[0].getHeight() ? imgs[0].getWidth() / 50 * 4.166666666666667 * 1.75 : imgs[0].getHeight() / 50 * 4.166666666666667* 1.75, 
            () => {
                imgs[0].composite(imgs[1], imgs[0].HORIZONTAL_ALIGN_RIGHT, imgs[0].VERTICAL_ALIGN_BOTTOM).write("./outputs/"+image.split("/").pop());
            }
        )
    }).catch(console.error)
})

Это хорошо работает на горизонтальных изображениях, но не на вертикальных. Любая помощь приветствуется.

Редактировать: Я обнаружил, что jimp читает изображения по вертикали как горизонтали. Я не знаю, может ли холст сделать это лучше.

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете использовать свойство img.bitmap.width & img.bitmap.height в JIMP, чтобы получить фактическую ширину и высоту изображения.

const width = item.bitmap.width
const height = item.bitmap.height
if (width > height) 
// horizontal
else if (width == height) 
// square
else
// vertical

Исходя из этого, вы можете продолжить дальше по логике

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...