silvia-odwyer/photon

GitHub: silvia-odwyer/photon

Photon 是一个高性能的 Rust/WebAssembly 图像处理库,支持在原生环境和 Web 端以接近原生的速度执行滤镜、色彩调整、卷积、变换等多种图像处理操作。

Stars: 3871 | Forks: 184

# photon

Photon banner, showing the Photon logo on a dark background

Photon

[![状态](https://img.shields.io/badge/status-active-success.svg?logo=statuspal)]() [![GitHub Issues](https://img.shields.io/github/issues/silvia-odwyer/photon.svg?logo=github)](https://github.com/silvia-odwyer/photon/issues) [![Gitter 聊天](https://img.shields.io/gitter/room/silvia-odwyer/photon?color=cyan&logo=Gitter)](https://gitter.im/photonlibrary/community "Gitter chat") [![NPM 每月下载量](https://img.shields.io/npm/dm/@silvia-odwyer/photon-node?logo=npm&color=pink)](https://www.npmjs.com/package/@silvia-odwyer/photon-node) [![GitHub Workflow 状态](https://img.shields.io/github/actions/workflow/status/silvia-odwyer/photon/ci.yml?branch=master&logo=github&)](https://github.com/silvia-odwyer/photon/blob/master/.github/workflows/compile_wasm.yaml) [![Crates.io](https://img.shields.io/crates/v/photon_rs?logo=rust)](https://crates.io/crates/photon_rs) [![许可证](https://img.shields.io/github/license/silvia-odwyer/photon)](https://github.com/silvia-odwyer/photon/blob/master/LICENSE.md) [![X (前身为 Twitter) 关注](https://img.shields.io/twitter/follow/silvia_923)](https://twitter.com/silvia_923 "Follow on X/Twitter")

高性能、跨平台的 Rust/WebAssembly 图像处理库

## 📝 目录 - [WebAssembly 入门](https://github.com/silvia-odwyer/photon#get-started-with-webassembly) - [原生环境入门](https://github.com/silvia-odwyer/photon#get-started-natively) - [文档](https://docs.rs/photon-rs/) - [官方网站](https://silvia-odwyer.github.io/photon/) - [所有可用函数](https://silvia-odwyer.github.io/photon/docs/photon/all.html) - [有疑问?在这里提问!](https://github.com/silvia-odwyer/photon#got-questions) Photon 是一个高性能的 Rust 图像处理库,它可以编译为 WebAssembly,从而在原生环境和网络上实现安全且极速的图像处理。 你可以通过以下方式运行 Photon: - 原生环境 - 通过 WebAssembly 在浏览器中 - 通过 WebAssembly 在 Node 上 ### 功能 - **快速:** 在 Web 端,Photon 的高性能使其能够以接近原生的速度运行。基准测试结果可以在[这里](https://github.com/silvia-odwyer/photon/wiki/Benchmarks)查看。 - **使用 JS 调用:** 想在 Web 端或配合 Node 使用 Photon?只需安装一个简单的 npm 包即可开始。享受 WebAssembly 的所有优势,同时具备零成本抽象。 - **原生使用:** 适用于命令行应用、原生照片编辑应用等场景。Photon 的核心代码库采用 Rust 编写,支持跨平台开发。 - **纯 Rust 实现** - 与其他库不同,该库 100% 的代码库均使用 Rust 编写,从而保证了安全性与可靠性。 ### 收录于 Photon 是 AI 助手 [OpenClaw](https://github.com/openclaw/openclaw) 使用的图像处理库,通过 [Rastermill](https://rastermill.com/) 集成。 它也是 [Pi 编程代理](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 所使用的图像处理库。 ### 在线演示 查看 [WebAssembly 官方在线演示](https://silvia-odwyer.github.io/photon/demo.html)。 ### Photon 实战应用 ![Imgur](https://i.imgur.com/PShSZ6k.png) ### 0.3.2 版本发布 0.3.2 版本已在 Crates.io 和 NPM 上发布,包含以下新功能: - 双色调滤镜和预设双色调效果 - 图像旋转 - 抖动滤镜 - 图像裁剪更新(已在 [PR #100](https://github.com/silvia-odwyer/photon/pull/100) 中修复) ### 支持的图像格式 支持以下图像格式: - PNG - JPEG - BMP - ICO - TIFF - WEBP ### 开始使用 #### 入门指南 查看 Photon 的[入门指南,包含教程、安装说明及更多内容](https://silvia-odwyer.github.io/photon/guide) ### 📚 文档 查看[官方文档](https://docs.rs/photon-rs/)。 ### 函数 提供了 96 个可自定义的函数,可用于实现多种图像效果。 函数包括: - **图像校正:** 色调旋转、锐化、亮度调整、饱和度调整、在不同色彩空间中调亮/调暗。 - **调整尺寸:** 在原生环境和 Web 端调整图像大小。 - **卷积:** Sobel 滤镜、模糊、Laplace 效果、边缘检测等。 - **通道操作:** 增加/减少 RGB 通道值、交换通道、移除通道等。 - **变换:** 调整大小、裁剪、旋转和翻转图像。 - **单色效果:** 单色调、多种形式的灰度化、阈值处理、棕褐色效果、RGB 值平均化。 - **色彩操作:** 在 HSL、LCh 和 sRGB 等多种色彩空间中处理图像,并相应地调整颜色。 - **滤镜:** 提供超过 30 种预设滤镜,整合了多种效果与变换。 - **水印:** 为多种格式的图像添加水印。 - **混合:** 使用 10 种不同的技术混合图像,更改图像背景。 - **特殊效果:** 胶片颗粒、晕影、Bayer 抖动效果 + 更多(位于代码库中,将在 2026 年的下一个库版本中通过 NPM/Crates.io 发布) ## 原生环境入门 ### 安装 将以下行添加到你的 Rust 项目的 Cargo.toml 的 dependencies 部分: ###### Cargo.toml ``` [dependencies] photon-rs = "0.3.2" ``` #### 在原生环境中使用 Photon 以下代码从文件系统打开一张图像,应用效果,并将其输出为 PNG 格式。 以下是一个帮助你入门的代码示例: ``` extern crate photon_rs; use photon_rs::native::{open_image, save_image}; fn main() -> Result<(), Box> { // Open the image (a PhotonImage is returned) let mut img = open_image("test_image.PNG")?; // Increment the red channel by 40 photon_rs::channels::alter_red_channel(&mut img, 40); // Write file to filesystem. save_image(img, "raw_image.JPG")?; Ok(()) } ``` ##### 查看更多示例 [如需更多示例,请查看关于如何原生使用 Photon 的指南。](https://silvia-odwyer.github.io/photon/guide/using-photon-natively/) ### 构建 WebAssembly 包 为了构建 WebAssembly 包,你需要 `wasm-pack`。请查看 [wasm-pack 安装指南](https://rustwasm.github.io/wasm-pack/installer/) 了解如何安装它。然后你可以运行以下命令: ``` wasm-pack build ./crate ``` ## WebAssembly 入门 ### 使用打包工具? #### 安装 Photon 如果你使用 Webpack 或其他打包工具来构建项目,请通过 [npm](https://www.npmjs.com/package/@silvia-odwyer/photon) 安装 Photon: ``` npm install @silvia-odwyer/photon ``` 你可以直接在任何支持 WebAssembly 的 Web 浏览器中运行 Photon,包括 Chrome、Firefox、Safari 和 Edge。 ##### 在 Web 端开始使用 Photon 要开始使用,请[查看指南](https://silvia-odwyer.github.io/photon/guide/using-photon-web/)。 #### 使用 NodeJS? 如果你打算将 Photon 与 NodeJS 结合使用,你可以安装该库的 NodeJS 版本: ``` npm install @silvia-odwyer/photon-node ``` 请查看 [NodeJS 教程,其中展示了如何将 Photon 与 NodeJS 结合使用](https://silvia-odwyer.github.io/photon/guide/using-photon-node/)。 #### 使用 Cloudflare Workers? 如果你使用 Cloudflare Workers,你可以安装以下库来将 Photon 与 Cloudflare Workers 结合使用: ``` npm install @cf-wasm/photon ``` 完整的使用步骤在[这里](https://www.npmjs.com/package/@cf-wasm/photon)提供。 ## 模块 Photon 包含一系列模块,其中包括: - `effects`:多种图像效果,包括添加偏移量、阈值处理、双色调、日晒效果等。 - `channels`:与增加/减少图像数据的红、绿、蓝通道相关的函数。 - `transform`:调整大小、裁剪、翻转和旋转图像。 - `filters`:预设滤镜,用于改变图像的 rgb 通道。包含 20 多种滤镜。 - `conv`:Laplace、Sobel、浮雕;需要图像卷积的图像处理函数。 - `noise`:产生不同色调和色相的噪点。 - `multiple`:用于处理多个图像的模块,例如为图像添加水印等。 - `correction`:色调旋转、调整饱和度、调亮/调暗:所有这些技术均可在多种色彩空间中使用,从而产生不同的效果。 ### 快速入门示例 克隆此代码库: ``` git clone https://github.com/silvia-odwyer/photon ``` 运行二进制文件,它将对图像执行图像处理功能: ``` cargo run --release ``` 将原始图像与输出的图像进行比较,你将看到所需的效果已成功应用。 ## 最新更新 - Bayer 抖动、胶片颗粒和晕影效果 - 在 [PR #216](https://github.com/silvia-odwyer/photon/pull/216) 中添加 - 3 路调色以及用于对图像进行调整/校正的函数 - 在 [PR #214](https://github.com/silvia-odwyer/photon/pull/214) 中添加 - 适用于 WASM 的半色调效果 - 在 [PR #184](https://github.com/silvia-odwyer/photon/pull/184) 中添加 ## 使用 Photon 的项目 - [OpenClaw](https://github.com/openclaw/openclaw) - [Pi 编程代理](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) - [Next Image Processing API](https://github.com/yoeven/next-image-processing-api) - [Hypetrigger](https://crates.io/crates/hypetrigger) - [PhotonLab](https://watt3d.dev/photon-lab/) 如果你使用 Photon 构建了项目并希望将其包含在列表中,只需提交一个 PR! ## 有疑问? 如果你对此库有进一步的疑问,可以在 [Gitter](https://gitter.im/photonlibrary/community) 或 [Spectrum](https://spectrum.chat/photonlibrary) 上提问,我会回复你! 如果在运行/使用该库时遇到任何问题,请务必提交一个 issue,我们将不胜感激,这也有助于改进该库。 - [Spectrum](https://spectrum.chat/photonlibrary) - [Gitter](https://gitter.im/photonlibrary/community) ## 额外说明 这些函数在设计时充分考虑了灵活性,以便可以充分利用特效和滤镜的完全定制化;对于每一个函数,只需稍微更改参数,就可以创建出数百种不同的图像效果/色调/色相,因此每一个函数都带来了充分实验的能力。 对于希望使用高级构造的开发者,库中也提供了相应的功能,例如对图像应用特效(例如:Laplace 或 Sobel)或滤镜;该库提供了一套完整的函数来实现这些操作,以及内置的滤镜和预设。 `photon` 可以被认为是 Rust `image` crate 的高级封装器,但反过来,它也包含提供对像素和通道操作低级访问的函数,非常适合希望直接处理这些数据的开发者。 ## 待办事项 - 使用浏览器特定的函数为库的 WASM 版本混合图像。 - 带有漏光等效果的复古图像。 - 在无头 Web 浏览器中对库的 WebAssembly 版本进行测试 ## 许可证 本项目基于 Apache 2.0 许可证授权 - 有关详细信息,请参阅 [LICENSE.md](LICENSE.md) 文件。
标签:AI工具, MITM代理, Rust, WebAssembly, 可视化界面, 图像处理, 多媒体处理, 开发库, 暗色界面, 网络流量审计, 通知系统