0
推荐背景
日常业务开发中常会遇到各种图像处理需求,如,图片大小调整、翻转、旋转、提取大小、加水印、图片模糊化,格式转换,修剪等等;图像处理根据业务需求一部分图像处理需求在前端完成,如,用户裁剪编辑,打马赛克,美化,色彩调整;用户传完图片后的逻辑在后端处理,此时就会用到图像处理相关的方法;Go 语言标准库提供的 image 能够处理最基本的图像处理任务,但个性化的图像处理任务还是得自己实现。
当标准库无法满足日常开发的需求时候,推荐使用 h2non/bimg ,它能够快速高效完成各种高级图像处理任务。
02
h2non/bimg 是什么
h2non/bimg 是基于 C 语言的 libvips 库封装的高级图像处理的 Go 包;它的性能极高,所占内存也很小,通常比 ImageMagick, GraphicsMagick,Go 标准库快 4 倍,在某些情况下,处理 JPEG 图像的速度甚至比它们快 8 倍。
bimg uses internally libvips, a powerful library written in C for image processing which requires a low memory footprint and it's typically 4x faster than using the quickest ImageMagick and GraphicsMagick settings or Go native image package, and in some cases it's even 8x faster processing JPEG images.
h2non/bimg 提供以下出片处理 API:
调整大小
放大
裁剪(包括智能裁剪支持,libvips 8.5+)
旋转(根据 EXIF 方向自动旋转)
翻转(具有基于EXIF元数据的自动翻转)
翻转
缩略图
获取大小
水印(使用文本或图像)
高斯模糊效果
自定义输出颜色空间(RGB,灰度...)
格式转换以及压缩处理
EXIF元数据(大小,Alpha通道,配置文件,方向...)修改
修剪(libvips 8.6+)
h2non/bimg 能够将图像输出为 JPEG、PNG 和 WEBP 格式,包括在它们之间进行格式转换。
03
怎么使用
h2non/bimg 因为基于 C 语言的 libvips 库,因此使用要满足以下几个条件:
libvips 8.3+ (8.8+ recommended)
C compatible compiler such as gcc 4.6+ or clang 3.0+
Go 1.3+
提示:
GIF、PDF 和 SVG 支持需要 libvips v8.3+。