该npm包于2023.7发布,能够直接在浏览器中删除图片的背景,无费用与隐私问题。DEMO
概述
@imgly/background-removal
允许开发人员直接在浏览器中无缝地从图像中删除背景。
特性:
- 浏览器内执行后台删除。直接在用户浏览器中执行整个后台删除过程,无需额外的服务器成本,利用本地设备计算能力,完成背景的去除。
- 数据隐私保护。完全浏览器运行,无需传输到外部服务器。
- 与 IMG.LY 的 CE.SDK 无缝集成。
@imgly/background-removal
提供与IMG.LY 的 CE.SDK 的无缝集成,使开发人员能够轻松地将强大的浏览器内图像抠图和背景去除功能合并到他们的项目中。
使用的神经网络(ONNX 模型@imgly/background-removal
)和 WASM 文件托管在UNPKG上,因此库的所有用户都可以轻松下载。如果您想在自己的服务器上托管数据,请参阅自定义资产服务部分。
安装
1 | npm install @imgly/background-removal |
使用
1 | import imglyRemoveBackground from "@imgly/background-removal" |
第一次运行获取 wasm 和 onnx 模型文件需要一定的时间。所有文件都由浏览器和附加模型缓存进行缓存。
高级配置
该库不需要任何配置即可启动,可选参数可以提供对库的更多控制。
1 | type Config = { |
下载的大小与质量
- small(~40MB):有时会显示伪影。
- medium(~80MB):默认模型。
下载进度监控
首次运行获取必要的数据并存储在浏览器缓存中。由于下载可能需要一些时间,可以选择查看下载进度。
1 | let config: Config = { |
性能
性能在很大程度上取决于可用的功能集。最重要的是,请确保 SharedArrayBuffer
MDN可用。由于 SharedArrayBuffer
的安全要求,需要设置两个标头来使您的站点与跨源隔离
1 | 'Cross-Origin-Opener-Policy': 'same-origin', |
定制资源
目前,wasm 和 onnx 神经网络通过 unpkg 提供服务。对于生产使用,我们建议您自行托管它们。因此,请将所有 .wasm 和 .onnx 文件复制到您的公共路径 $PUBLIC_PATH,并重新配置库。
1 | cp node_modules/@imgly/background-removal/dist/*.wasm $PUBLIC_PATH |
然后,在代码中可以导入 @imgly/background-removal
库,配置并使用它来移除背景。参考以下示例:
1 | import imglyRemoveBackground, {Config} from "@imgly/background-removal" |
这段代码的作用是将 @imgly/background-removal
库的 wasm 和 onnx 文件从 unpkg 复制到您的公共路径,并配置库以使用这些文件来执行背景移除操作。请确保替换 public_path
变量为您自己的实际公共路径。
调试输出
启用调试输出并记录到控制台
1 | let config: Config = { |
跨域资源共享(CORS)
如果您遇到 CORS 问题,您可能需要通过以下方式将其他参数传递给 fetch 函数
1 | let config: Config = { |
它们给谁用?
@imgly/background-removal
适合需要直接在浏览器中高效且经济高效地去除背景的开发人员和项目,包括但不限于:
- 需要实时去除产品图像背景的电子商务应用程序。
- 需要背景去除功能以增强用户体验的图像编辑应用程序。
- 基于网络的图形设计工具,旨在通过浏览器内背景删除来简化创作过程。
无论您是专业开发人员还是业余爱好者,@imgly/background-removal
都可以让您轻松交付令人印象深刻的应用程序和服务。