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
GIF,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
原文:https://www.cnblogs.com/yangxinpython/p/12830692.html