问题标签 [sharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 Express 提供动态生成的图像或保存的图像
我构建了一个图像交付应用程序,它可以提供图像并按需调整大小/更改图像扩展名。
我使用 Express 进行路由,使用 Sharp 处理图像。
当请求具有新大小/扩展名的图像时,我想将生成的图像保存在文件系统上,并在下次使用相同参数(某种缓存)请求相同图像时检索保存的图像。
我构建的一切工作正常,但在生产中 CPU 使用率很高。我怀疑这是因为我在将图像res.sendFile()
保存到文件系统后返回了图像。
目前这是我的工作流程:
- 如果图像已使用所需参数(
fs.access()
)保存,我会检查文件系统 - 如果存在,我
res.sendFile
本地图像路径 - 如果它不存在,我使用 Sharp 生成它,我将它保存在文件系统中,然后我
res.sendFile
生成的图像路径
我阅读res.sendFile
不使用系统 sendfile 调用,并且 CPU 很重。
我该如何更换它?
这是我在谷歌搜索时发现的:
- 当我生成新图像时,我可以
res.send()
使用 Sharp 生成的缓冲区而不是res.sendFile
保存的图像 - 当图像已经保存时,也许我应该使用静态快速中间件(http://expressjs.com/en/starter/static-files.html)但我不知道如何动态调用它并告诉它图片路径(基于请求 URL 中提供的参数)。
npm - 在 macOS 上使用 npm 安装Sharp时出错
如果我创建一个新的 npm 项目:
然后尝试安装sharp:
我收到以下错误消息:
我找到了删除的说明~/.node-gyp
,试过了,没有用。删除node_modules
再试也行不通。运行sudo
也无济于事。
关于如何追踪问题所在的任何想法?
javascript - 开玩笑 - 我如何模拟这个模块..?
我试图嘲笑尖锐,我有这个:
当我import sharp from 'sharp'
和console.log(sharp)
我得到:
function Sharp() {return mockConstructor.apply(this,arguments);}
似乎是的,它找到了我的模拟模块,而不是真正的模块。
你sharp
这样使用:
但是,当我sharp()
使用我的模拟模块从测试代码调用时,它的值是undefined
,而不是instanceof sharp
.
我试过用替换const Sharp = jest.genMockFromModule('sharp')
,function Sharp (input, options) { return this }
但这没有区别。
我究竟做错了什么..?
node.js - 用于 VS Node.js 中 AWS Lambda 函数的 Sharp 图像库
我正在 Visual Studio 中处理需要快速调整图像大小的 AWS Lambda 函数。最初,我使用 ImageMagick 来调整这些图像的大小,但整个过程处理时间太长。ImageMagick 的替代品似乎是另一个图像库 Sharp。据说夏普将使用原生 AWS Lambda 代码来更快地调整图像大小。根据这篇文章,需要在 EC2 实例中构建 Sharp 才能执行此操作(https://github.com/awslabs/serverless-image-resizing)。
我还不能让它工作。这里有没有人让这个工作呢?如果是这样,是否有为 Sharp 内置在 EC2 中的预构建库,还是我应该自己构建它?
我确实在 npm 中找到了一个 Sharp 库,但我无法让它工作。npm 中的 Sharp 库是否与 AWS Lambda 函数兼容?如果是这样,它是否通过使用本机处理提高了速度?
node.js - 如何从 node.js 锐利模块缓冲区访问图像
我是 node.js 和 Web 开发的新手,对 node.js 锐利模块有疑问。我想使用 node.js sharp 模块调整图像大小/裁剪图像,将其存储到缓冲区并在之后访问它。在阅读了Sharp API之后,我想出了这个代码示例。
我认为变量 img 现在包含我的新图像。我的第一个问题是我的假设是否正确。如果这是正确的,我如何在我的网站上显示新图像?如果可能,我想使用 HTML img 标签。但如果有更好更简单的方法,请随时告诉我。我不想将图像存储到本地文件。
谢谢你的帮助!
node.js - 尝试在 openshift v3 上安装 sharp 或 node-gyp 时构建总是失败
构建总是失败并显示此日志:
尝试使用 nodejs v6 从 openshift v3 上的 repo (bitbucket) 构建。使用 nodejs v6.9.2、npm v4.2.0、sharp v0.18.4 在 localhost 上运行良好
node.js - 使用 node.js 和 Sharp 包将非裁剪调整为 png
我正在尝试使用 Nodejs 锐化包调整图像/转换为 png 的大小而不进行裁剪。根据文档,它是 .max() 方法,遗憾的是在调整为 png 大小时不起作用(图像被裁剪)。任何解决方法?
node.js - nodejs Sharp:透明成白色
我正在使用 Nodejs Sharp 将 png 图像转码/调整大小为 jpg。有没有办法用白色(或其他浅色)而不是黑色代替透明?我找到了旧图书馆的解决方案,但夏普似乎是最快和最好的。
.background 不起作用
npm - 无法安装锐器
sharp@0.18.4 安装 C:\Users\hp\AppData\Roaming\npm\node_modules\sharp
node-gyp rebuild