Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否有一个属性可以知道图像是垂直的还是水平的?_Node.js_Image - Fatal编程技术网

Node.js 是否有一个属性可以知道图像是垂直的还是水平的?

Node.js 是否有一个属性可以知道图像是垂直的还是水平的?,node.js,image,Node.js,Image,我正在制作一个在图像上添加水印的代码。唯一的问题是,一些图像处于垂直模式,而另一些图像处于水平模式。因此,垂直方向的图像在正方形中裁剪,并在正方形周围添加黑色背景 我什么也没找到。我是这样使用image.composite的:但这并不能解决我的问题。我调整背景图像上的图像大小 我的实际代码: 让jimp=requireJimp 让images=requirefs.readdirSync./images images.forEachimage=>{ 让p1=jimp.read./images/+i

我正在制作一个在图像上添加水印的代码。唯一的问题是,一些图像处于垂直模式,而另一些图像处于水平模式。因此,垂直方向的图像在正方形中裁剪,并在正方形周围添加黑色背景

我什么也没找到。我是这样使用image.composite的:但这并不能解决我的问题。我调整背景图像上的图像大小

我的实际代码:

让jimp=requireJimp 让images=requirefs.readdirSync./images images.forEachimage=>{ 让p1=jimp.read./images/+image.split/.pop; Promise.all[p1,p2]。然后imgs=>{ imgs[1]。调整imgs[0]。getWidth>imgs[0]。getHeight?imgs[0]。getWidth/50*4.16667*1.75:imgs[0]。getHeight/50*4.16667*1.75, imgs[0]。getWidth>imgs[0]。getHeight?imgs[0]。getWidth/50*4.16667*1.75:imgs[0]。getHeight/50*4.16667*1.75, => { imgs[0]。合成imgs[1],imgs[0]。水平对齐,imgs[0]。垂直对齐,底部。写入。/outputs/+image.split/.pop; } }.catchconsole.error } 这适用于水平图像,但不适用于垂直图像。 感谢您的帮助


编辑:我发现jimp将垂直方向的图像视为水平方向。我不知道canvas是否可以做得更好。

您可以使用JIMP中的img.bitmap.width&img.bitmap.height属性来获取图像的实际宽度和高度

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

基于此,您可以在逻辑上进行进一步的操作

我找不到一种方便的方法来使用jimp,但是您可以使用package来读取exif方向数据。最后,我使用了两个文件夹和画布,但我将查看节点exif是否更好