Библиотека Go с открытым исходным кодом для создания изображений и управления ими

Мощный API Go, поддерживающий изменение размера, обрезку и поворот изображений JPEG, PNG, GIF, TIFF и BMP. Вы также можете настроить яркость изображения, контрастность, гамма-коррекцию изображений.

Go Imaging API с открытым исходным кодом — это очень мощный пакет, предоставляющий полную функциональность, связанную с созданием изображений и управлением ими. Библиотека очень гибкая и позволяет разработчикам легко создавать новые изображения и изменять существующие всего за пару строк кода.

Imaging — это чистая библиотека Go, небольшая по размеру и эффективная по функциональности. Он включает поддержку нескольких важных форматов файлов изображений, таких как JPEG, PNG, GIF, TIFF, BMP и многих других. Библиотека также включает несколько фильтров передискретизации для изменения размера изображения. Некоторые важные фильтры: NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box и т. д. Библиотека также помогла разработчикам создавать собственные фильтры.

Бесплатная библиотека изображений включает в себя несколько важных функций, связанных с обработкой изображений, таких как изменение размера изображений, поворот изображения, обрезка изображения, регулировка яркости изображения, регулировка контрастности изображения, гамма-коррекция изображений, изменение насыщенности изображения, клонирование изображений, размытие, кодирование и декодирование изображений, наложение изображений, добавление резкости, создание эскизов и многие другие функции.

Previous Next

Начало работы с визуализацией

Самый простой и рекомендуемый способ установки Imaging — через GitHub.

Установите образ через 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. Во-первых, вам нужно открыть изображение и указать высоту, а также ширину изображения, чтобы изменить его размер. Другой вариант заключается в том, что вы можете изменить размер изображения, просто указав ширину, сохранив соотношение сторон. Библиотека также позволяет обрезать исходное изображение, задавая пользовательскую ширину, высоту и используя центральную привязку.

Crop & Resize Image через 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)
}

Отразить, повернуть, размыть и клонировать изображения

Библиотека изображений включает несколько важных функций для обработки изображений, таких как отражение изображения, вращение изображения, размытие и клонирование. Чтобы сделать копию существующего изображения, вам просто нужно вызвать функцию Clone и предоставить существующее изображение. Библиотека также поддерживает вращение и переворачивание изображения всего за пару строк кода. Вы можете легко повернуть изображение на заданный угол против часовой стрелки. Параметр угла представляет собой угол поворота в градусах.

Clone Image через Go 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
}
 Русский