bimg由 libvips 库提供支持的图像处理 Go 包

联合创作 · 2023-09-29 23:00

bimg 是一个由 libvips C 库提供支持的用于进行快速图像处理的 Go 包,提供简单的编程 APIbimg 支持常见的图像操作,如裁剪、调整大小、旋转、缩放或水印。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
浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报