Go библиотека с отворен код за създаване и манипулиране на изображения
Мощен Go API, който поддържа преоразмеряване, изрязване и завъртане на JPEG, PNG, GIF, TIFF и BMP изображения. Можете също така да регулирате яркостта на изображението, контраста, гама корекцията на изображенията.
Go Imaging API с отворен код е много мощен пакет, който предоставя пълна функционалност, свързана със създаването и манипулирането на изображения. Библиотеката е много гъвкава и позволява на разработчиците лесно да създават нови изображения и да променят съществуващите само с няколко реда код.
Imaging е чиста Go библиотека, която е малка по размер и ефективна по отношение на функционалността. Той включва поддръжка за няколко важни файлови формати на изображения като JPEG, PNG, GIF, TIFF, BMP и много други. Библиотеката също така включва няколко филтъра за преоразмеряване за преоразмеряване на изображения. Някои важни филтри са NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box и т.н. Библиотеката също така улесни разработчиците да създават персонализирани филтри.
Безплатната библиотека за изображения включва няколко важни функции, свързани с обработката на изображения, като преоразмеряване на изображения, завъртане на изображението, изрязване на изображението, регулиране на яркостта на изображението, настройки на контраста на изображението, гама корекция на изображенията, промяна на наситеността на изображението, клониране на изображения, изображение замъгляване, кодиране и декодиране на изображения, наслагване на изображения, добавяне на острота, създаване на миниатюри и много други функции.
Първи стъпки с изображения
Най-лесният и препоръчителен начин за инсталиране на Imaging е чрез GitHub.
Инсталирайте Imaging чрез 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 Изображение чрез 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 и да предоставите съществуващото изображение. Библиотеката също така поддържа завъртане и обръщане на вашето изображение само с няколко реда код. Можете лесно да завъртите изображение под дадения ъгъл обратно на часовниковата стрелка. Параметърът на ъгъла е ъгълът на завъртане в градуси.
Изображение на клонинг чрез 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
}