Библиотека Go с открытым исходным кодом для создания изображений и управления ими
Мощный API Go, поддерживающий изменение размера, обрезку и поворот изображений JPEG, PNG, GIF, TIFF и BMP. Вы также можете настроить яркость изображения, контрастность, гамма-коррекцию изображений.
Go Imaging API с открытым исходным кодом — это очень мощный пакет, предоставляющий полную функциональность, связанную с созданием изображений и управлением ими. Библиотека очень гибкая и позволяет разработчикам легко создавать новые изображения и изменять существующие всего за пару строк кода.
Imaging — это чистая библиотека Go, небольшая по размеру и эффективная по функциональности. Он включает поддержку нескольких важных форматов файлов изображений, таких как JPEG, PNG, GIF, TIFF, BMP и многих других. Библиотека также включает несколько фильтров передискретизации для изменения размера изображения. Некоторые важные фильтры: NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box и т. д. Библиотека также помогла разработчикам создавать собственные фильтры.
Бесплатная библиотека изображений включает в себя несколько важных функций, связанных с обработкой изображений, таких как изменение размера изображений, поворот изображения, обрезка изображения, регулировка яркости изображения, регулировка контрастности изображения, гамма-коррекция изображений, изменение насыщенности изображения, клонирование изображений, размытие, кодирование и декодирование изображений, наложение изображений, добавление резкости, создание эскизов и многие другие функции.
Начало работы с визуализацией
Самый простой и рекомендуемый способ установки 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
}