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