用于图像创建和处理的开源 Go 库
强大的 Go API,支持调整大小、裁剪和旋转 JPEG、PNG、GIF、TIFF 和 BMP 图像。您还可以调整图像的亮度、对比度、伽玛校正。
开源的 Go Imaging API 是一个非常强大的包,它提供了与图像创建和操作相关的完整功能。该库非常灵活,开发人员只需几行代码即可轻松创建新图像并修改现有图像。
Imaging 是一个纯 Go 库,体积小,功能高效。它支持多种重要的图像文件格式,如 JPEG、PNG、GIF、TIFF、BMP 等。该库还包括几个用于调整图像大小的重采样过滤器。一些重要的过滤器是 NearestNeighbor、Lanczos、CatmullRom、MitchellNetravali、Linear、Box 等。该库还有助于开发人员创建自定义过滤器。
免费的图像库包含与图像处理相关的几个重要功能,例如调整图像大小、图像旋转、图像裁剪、调整图像亮度、图像对比度调整、图像伽马校正、改变图像饱和度、克隆图像、图像模糊、编码和解码图像、图像叠加、添加清晰度、创建缩略图和许多其他功能。
成像入门
通过 GitHub 安装 Imagingis 的最简单和推荐的方法。
通过 GitHub 安装映像
go get -u github.com/disintegration/imaging
通过 Go API 生成新图像
开源图像库支持使用 Go 命令在他们自己的应用程序中生成新图像。新的图像创建需要图像的宽度、高度、图像的背景颜色和图像的输出格式。您还可以轻松修改创建的图像并执行不同的操作,如翻转、设置不透明度、混合、模糊等等。
通过 Go API 生成新图像
func New(width, height int, fillColor color.Color) *image.NRGBA {
if width <= 0 || height <= 0 {
return &image.NRGBA{}
}
c := color.NRGBAModel.Convert(fillColor).(color.NRGBA)
if (c == color.NRGBA{0, 0, 0, 0}) {
return image.NewNRGBA(image.Rect(0, 0, width, height))
}
return &image.NRGBA{
Pix: bytes.Repeat([]byte{c.R, c.G, c.B, c.A}, width*height),
Stride: 4 * width,
Rect: image.Rect(0, 0, width, height),
}
}
通过 Go 将图像转换为其他格式
软件开发人员可以使用免费的图像库在他们自己的 GO 应用程序中轻松地将他们的图像转换为其他支持的文件格式。您只需要提供图像名称和输出图像格式。使用保存功能,您可以轻松地将图像导出为其他几种受支持的图像文件格式,例如 PNG、BMP、GIF、JPEG、TIFF 等。
调整大小和裁剪图像
免费成像 API 包含使用 Go 命令根据您的需要调整图像大小的功能。首先,您需要打开图像并提供图像的高度和宽度以调整其大小。另一种选择是您可以通过保留纵横比来仅提供宽度来调整图像大小。该库还允许通过提供自定义宽度、高度和使用中心锚来裁剪原始图像。
通过走API进行作物调整图像
func cropAndResize(img image.Image, width, height int, anchor Anchor, filter ResampleFilter) *image.NRGBA {
dstW, dstH := width, height
srcBounds := img.Bounds()
srcW := srcBounds.Dx()
srcH := srcBounds.Dy()
srcAspectRatio := float64(srcW) / float64(srcH)
dstAspectRatio := float64(dstW) / float64(dstH)
var tmp *image.NRGBA
if srcAspectRatio < dstAspectRatio {
cropH := float64(srcW) * float64(dstH) / float64(dstW)
tmp = CropAnchor(img, srcW, int(math.Max(1, cropH)+0.5), anchor)
} else {
cropW := float64(srcH) * float64(dstW) / float64(dstH)
tmp = CropAnchor(img, int(math.Max(1, cropW)+0.5), srcH, anchor)
}
return Resize(tmp, dstW, dstH, filter)
}
翻转、旋转、模糊和克隆图像
Imaging 库包含用于图像处理的几个重要功能,例如图像翻转、图像旋转、模糊和克隆。要复制现有图像,您只需调用 Clone 函数并提供现有图像。该库还支持只需几行代码即可旋转和翻转图像。您可以轻松地将图像逆时针旋转给定角度。角度参数是以度为单位的旋转角度。
通过走API克隆图像
func Clone(img image.Image) *image.NRGBA {
src := newScanner(img)
dst := image.NewNRGBA(image.Rect(0, 0, src.w, src.h))
size := src.w * 4
parallel(0, src.h, func(ys <-chan int) {
for y := range ys {
i := y * dst.Stride
src.scan(0, y, src.w, y+1, dst.Pix[i:i+size])
}
})
return dst
}