开源高级图像处理 Go 库
Go API 允许图像旋转、适合图像、创建图像缩略图、缩放图像、嵌入或扩展图像、为图像添加模糊效果等等。
bimg 是一个开源的高级图像处理 Go 库,只需几行 Go 代码即可提供读取和操作图像的能力。该库规模较小,但产生组织良好且高效的结果。与需要非常小的内存来完成任务的其他可用库相比,该库非常快。
bimg 是建立在 libvips 之上的高级 C 库,libvips 是一个非常强大的图像处理库。它支持读取一些非常流行的图像文件格式,如 JPEG、PNG、WEBP、TIFF、PDF、GIF、SVG 等。您还可以轻松地将图像导出为 JPEG、PNG、WEBP 格式以及透明图像。
bimg 库包含对几个重要的图像处理功能的支持,例如调整图像大小、放大图像、图像裁剪(包括智能裁剪支持、翻转或旋转图像、创建图像缩略图、图像缩放支持、添加水印和高斯模糊效果、提取特定从图像的区域,修剪图像,图像转换为其他格式等等。
开始使用 bimg
安装 bimg 的最简单和推荐的方法是通过 GitHub。
通过 GitHub 安装 bimg
go get -u gopkg.in/h2non/bimg.v1
通过 Go 将图像转换为其他格式
开源 bimg 库使软件开发人员能够以编程方式将图像转换为其他支持的文件格式,只需几行 Go 代码。假设您有一个 JPEG 格式的文件,并且您想将其转换为 PNG。您需要提供图像名称、地址和转换格式等图像信息。图像将轻松成功地转换为建议的格式。
通过图书馆将JPG图像转换为NG
buffer, err := bimg.Read("image.jpg")
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
newImage, err := bimg.NewImage(buffer).Convert(bimg.PNG)
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
if bimg.NewImage(newImage).Type() == "png" {
fmt.Fprintln(os.Stderr, "The image was converted into png")
}
裁剪或调整图像大小
免费的 bimg 库使软件开发人员能够在自己的 Go 应用程序中调整图像大小和裁剪图像。您还需要提供新图像的宽度和高度以及位置。它还支持在不保留纵横比的情况下强制调整大小操作。您还可以添加文本并从图像中提取您选择的区域。裁剪将图像裁剪为指定的确切尺寸。
通过图书馆调整图像
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)
为图像添加水印
bimg API 包含了在 Go 应用程序中轻松为图像添加水印的功能。添加水印是保护图像的一项非常有用的功能。水印是在互联网上保护您的照片的最简单且非常有用的方法。您可以轻松放置徽标或文字水印。该库可帮助您以编程方式在图像的任何选定位置以及不透明度上添加水印。
通过走API加入水印图像
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)
翻转和旋转图像
开源 bimg 库使软件开发人员能够使用 Go 语言命令根据需要旋转图像。有一种自动图像旋转的方法。 AutoRotate 功能会根据 EXIF 方向元数据(如果可用)自动旋转图像,无需额外转换。它还提供对翻转或翻转图像、图像解释、图像长度、图像元数据等的支持。
应用程序内旋转图像
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)