1. 产品
  2.   图片
  3.   GO
  4.   Imaging
 
  

用于图像创建和处理的开源 Go 库

强大的 Go API,支持调整大小、裁剪和旋转 JPEG、PNG、GIF、TIFF 和 BMP 图像。您还可以调整图像的亮度、对比度、伽玛校正。

开源的 Go Imaging API 是一个非常强大的包,它提供了与图像创建和操作相关的完整功能。该库非常灵活,开发人员只需几行代码即可轻松创建新图像并修改现有图像。

Imaging 是一个纯 Go 库,体积小,功能高效。它支持多种重要的图像文件格式,如 JPEG、PNG、GIF、TIFF、BMP 等。该库还包括几个用于调整图像大小的重采样过滤器。一些重要的过滤器是 NearestNeighbor、Lanczos、CatmullRom、MitchellNetravali、Linear、Box 等。该库还有助于开发人员创建自定义过滤器。

免费的图像库包含与图像处理相关的几个重要功能,例如调整图像大小、图像旋转、图像裁剪、调整图像亮度、图像对比度调整、图像伽马校正、改变图像饱和度、克隆图像、图像模糊、编码和解码图像、图像叠加、添加清晰度、创建缩略图和许多其他功能。

Previous Next

成像入门

通过 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
}
 中国人