当前位置: 首页 > 面试题库 >

Node.js:不使用ImageMagick调整图像大小

穆俊哲
2023-03-14
问题内容

我正在Node.js(+ express
4)上开发一个Web应用程序,用户可以通过将其上载到服务器来设置其个人资料图像。我们已经限制了文件的模仿类型和最大文件大小,因此用户上传的png或jpeg图片不能超过200KB。

问题是我们想将上传的图片分辨率(服务器端)调整为200x200,以改善页面加载并节省磁盘空间。经过研究,所有答案都指向使用任何基于ImageMagick或GraphicsMagick的模块。

但是,对于我来说,必须安装ImageMagick /
GraphicsMagick进行简单的图像大小调整似乎太过头了,因此,除了Node.js之外,还有其他解决方案吗?

编辑:
由于不再维护以前的解决方案(lwip),因此我将接受的解决方案更改为Sharp。感谢您的所有反馈!


问题答案:

我会投票给Sharp:

sharp('input.jpg')
  .resize(200, 200)
  .toFile('ouput.jpg', function(err) {
    // output.jpg is a 200 pixels wide and 200 pixels high image
    // containing a scaled and cropped version of input.jpg
  });

它速度很快,通常比最快的基于imagemagick的节点绑定快6倍,并且运行时的内存很少,甚至可能少10倍。直接链接到libvips图像库,没有炮击外部程序,并且该库本身比*
magick更快,更高效。它支持有用的功能,例如流,缓冲区和文件系统的输入和输出,颜色管理,透明度,承诺,覆盖,WebP,SVG等。

从0.20开始,npm将在大多数平台上自动下载完整的预编译二进制文件,因此不需要node-gyp。只需输入:

npm install sharp

要么:

yarn add sharp

然后离开。



 类似资料:
  • 我正在Node上开发一个web应用程序。js(express 4),用户可以通过上传到服务器来设置他们的个人资料图像。我们已经限制了文件mimetype和最大文件大小,因此用户上传的png或jpeg图像不能超过200KB。 问题是,我们希望将上传的图像分辨率(服务器端)调整为200x200,以提高页面加载并节省磁盘空间。经过一些研究,所有答案都指向使用基于ImageMagick或GraphicsM

  • 问题内容: 我有一个快速的问题,我不太确定要进行设置。我在其他地方看到过示例,但没有什么比我的情况更具体。我想使用PHP调整图像的大小,以使图像易于阅​​读,而不仅仅是像使用HTML那样随意拉伸。如果它们的宽度不是250像素,也不是160像素,那么如何调整图片的大小,使其成比例但适合该空间? 谢谢! 问题答案: 好的,下面是我在商店中使用的Image对象。保持规模-需要GD 我在请求时调整图像的大

  • 所以我有一个非常奇怪的情况。我有两个图标,都是288x288px。但第一个图标在应用程序中显示得比另一个更大。 她是我的xml: css部分:. background{background-图像: url("res://login_bg"); background-重复:无重复;background-大小:封面;background-位置:中心;} 和两个图标: 有人有同样的问题吗?

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro

  • 问题内容: 我是Django(和Python)的新手,在尝试使用其他人的应用程序之前,我一直在尝试自己做一些事情。我在理解事物在Django(或Python)的执行方式中“适合”何处时遇到了麻烦。我要解决的问题是上传图片后如何调整图片大小。我已经很好地设置了模型并插入了admin,并且图像可以很好地上传到目录: 我现在遇到的麻烦是获取该文件并将新文件制作为缩略图。就像我说的那样,我想知道如何在不使

  • 问题内容: 我需要调整PNG,JPEG和GIF文件的大小。如何使用Java做到这一点? 问题答案: 加载图像后,你可以尝试: