# vipsgen - libvips图像处理库自动生成Go绑定的工具
## 项目简介
vipsgen 是一个为libvips图像处理库自动生成Go语言绑定的工具。它通过GObject Introspection分析libvips API,自动生成类型安全、完整的Go绑定代码,解决了传统手动绑定方式存在的维护困难、功能不全等问题。
## 核心特性
- 🚀 **高性能**:基于libvips引擎,处理速度比ImageMagick快5-10倍
- 🧠 **低内存**:独特的流式处理架构,内存占用仅为传统方案的1/10
- 📚 **完整支持**:自动生成300+图像操作API绑定
- 🛠️ **类型安全**:所有参数和返回值都有严格的类型定义
- 🌊 **流式处理**:原生支持`io.Reader`和`io.Writer`接口
- 🔄 **自动同步**:绑定代码随libvips版本自动更新
## 安装指南
### 基础依赖
```bash
# macOS
brew install vips pkg-config
# Ubuntu/Debian
sudo apt-get install libvips-dev pkg-config
# 解决macOS编译问题
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
```
### 安装Go包
```bash
go get -u github.com/cshum/vipsgen/vips
```
## 快速入门
```go
package main
import (
"log"
"github.com/cshum/vipsgen/vips"
)
func main() {
// 加载图片
img, err := vips.NewImageFromFile("input.jpg")
if err != nil {
log.Fatal(err)
}
defer img.Close()
// 调整大小
if err := img.Resize(0.5, nil); err != nil {
log.Fatal(err)
}
// 保存为WebP
if err := img.Webpsave("output.webp", &vips.WebpsaveOptions{
Q: 90,
Effort: 4,
}); err != nil {
log.Fatal(err)
}
}
```
## 高级功能
### 自定义绑定生成
```bash
go install github.com/cshum/vipsgen/cmd/vipsgen@latest
vipsgen -out ./vips
```
### 流式处理示例
```go
// 从HTTP响应流处理图片
resp, _ := http.Get("https://example.com/image.jpg")
source := vips.NewSource(resp.Body)
defer source.Close()
img, _ := vips.NewImageFromSource(source)
defer img.Close()
```
## 性能对比
操作 | vipsgen | 传统方案
--- | --- | ---
4K图片缩放 | 218ms | 1200ms
内存占用 | 32MB | 300MB
并发能力 | 1000+ QPS | 200 QPS
## 适用场景
- 电商平台图片服务
- 社交媒体内容处理
- CMS系统图片管理
- 云服务图片处理管线
## 项目地址
GitHub: [https://github.com/cshum/vipsgen](https://github.com/cshum/vipsgen)
## 授权协议
MIT License

libvips图像处理库 自动生成Go语言绑定的工具 vipsgen