图像处理 bimg

Small Go软件包,用于通过C绑定使用libvips进行快速的高级图像处理,提供了简单,优雅且流畅的编程API

bimg被设计为一个小型高效的库,支持一组常见的图像操作,例如裁剪,调整大小,旋转,缩放或水印。如果libvips@8.3+使用正确的库绑定进行编译,它可以本地读取JPEG,PNG,WEBP,还可以读取TIFF,PDF,GIF和SVG格式

bimg能够将图像输出为JPEG,PNG和WEBP格式,包括它们之间的透明转换。

bimg在内部使用libvips,这是一个用C语言编写的功能强大的库,用于图像处理,它占用的内存很少,通常比使用最快的ImageMagick和GraphicsMagick设置或Go native image快4倍,并且在某些情况下甚至比处理JPEG图像快8倍。

如果您正在寻找基于HTTP的图像处理解决方案,请参见imaginary

bimg受到Sharp的大力启发,Sharp的同源软件包是为node.js构建的bimg用于生产环境中,每天处理数千张图像。

v1通知bimg引入了一些较小的重大更改v1如果您使用gopkg.in,则仍然可以依赖而v0不用担心API的重大更改。

内容

支持的图像操作

  • 调整大小
  • 放大
  • 作物(包括智能作物支持,libvips 8.5+)
  • 旋转(基于EXIF方向自动旋转)
  • 翻转(具有基于EXIF元数据的自动翻转)
  • 翻牌圈
  • 放大
  • 缩图
  • 提取面积
  • 水印(使用文本或图像)
  • 高斯模糊效果
  • 自定义输出颜色空间(RGB,灰度...)
  • 格式转换(具有其他质量/压缩设置)
  • EXIF元数据(大小,Alpha通道,配置文件,方向...)
  • 修剪(libvips 8.6+)

先决条件

  • libvips 7.42+或8+(建议8.4+)
  • 与C兼容的编译器,例如gcc 4.6+或clang 3.0+
  • 继续1.3+

注意libvipsGIF,PDF和SVG支持需要v8.3 +。

下载

go get -u gopkg.in/h2non/bimg.v1\


调整大小

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

newImage, err := bimg.NewImage(buffer).Resize(800, 600)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

size, err := bimg.NewImage(newImage).Size()
if size.Width == 800 && size.Height == 600 {
  fmt.Println("The image size is valid")
}

bimg.Write("new.jpg", newImage)

旋转

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

newImage, err := bimg.NewImage(buffer).Rotate(90)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

bimg.Write("new.jpg", newImage)



水印



buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

watermark := bimg.Watermark{
  Text:       "Chuck Norris (c) 2315",
  Opacity:    0.25,
  Width:      200,
  DPI:        100,
  Margin:     150,
  Font:       "sans bold 12",
  Background: bimg.Color{255, 255, 255},
}

newImage, err := bimg.NewImage(buffer).Watermark(watermark)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}

bimg.Write("new.jpg", newImage)
 
 

 详细方法

https://www.ctolib.com/bimg.html#articleHeader10

 

posted @ 2020-05-05 14:38  杨鑫Zz  阅读(1646)  评论(0编辑  收藏  举报