bimg 是一个由 libvips C 库提供支持的用于进行快速图像处理的 Go 包,提供简单的编程 API。bimg 支持常见的图像操作,如裁剪、调整大小、旋转、缩放或水印。bimg 能够将图像输出为 JPEG、PNG 和 WEBP 格式,包括在它们之间进行透明转换。
bimg 内部使用 libvips,这是一个用 C 语言编写的图像处理库,通常比使用 ImageMagick 和 GraphicsMagick 快 4 倍,在某些情况下,处理 JPEG 图像的速度甚至快 8 倍。
支持的图像操作
- 调整大小
- 放大
- 裁剪
- 旋转
- 翻转
- 缩略图
- 提取区域
- 水印
- 高斯模糊效果
- 自定义输出色彩空间
- 格式转换
- EXIF 元数据
先决条件
- libvips 8.3+(推荐 8.8+)
- 与 C 语言兼容的编译器,例如 gcc 4.6+ 或 clang 3.0+
- Go 1.3+
安装
go get -u github.com/h2non/bimg
libvips
按照libvips
安装说明进行操作:
https://libvips.github.io/libvips/install.html
基准测试
在 macOS i7 2.7Ghz 中使用 Go 1.5.1 和 libvips-7.42.3 进行测试
BenchmarkRotateJpeg-8 20 64686945 ns/op
BenchmarkResizeLargeJpeg-8 20 63390416 ns/op
BenchmarkResizePng-8 100 18147294 ns/op
BenchmarkResizeWebP-8 100 20836741 ns/op
BenchmarkConvertToJpeg-8 100 12831812 ns/op
BenchmarkConvertToPng-8 10 128901422 ns/op
BenchmarkConvertToWebp-8 10 204027990 ns/op
BenchmarkCropJpeg-8 30 59068572 ns/op
BenchmarkCropPng-8 10 117303259 ns/op
BenchmarkCropWebP-8 10 107060659 ns/op
BenchmarkExtractJpeg-8 50 30708919 ns/op
BenchmarkExtractPng-8 3000 595546 ns/op
BenchmarkExtractWebp-8 3000 386379 ns/op
BenchmarkZoomJpeg-8 10 160005424 ns/op
BenchmarkZoomPng-8 30 44561047 ns/op
BenchmarkZoomWebp-8 10 126732678 ns/op
BenchmarkWatermarkJpeg-8 20 79006133 ns/op
BenchmarkWatermarPng-8 200 8197291 ns/op
BenchmarkWatermarWebp-8 30 49360369 ns/op