Бібліотека 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 Apps за допомогою безкоштовної бібліотеки зображень. Вам просто потрібно вказати назву зображення та формат вихідного зображення. Використовуючи функцію збереження, ви можете легко експортувати зображення в кілька інших підтримуваних форматів файлів зображень, таких як 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 і надати наявне зображення. Бібліотека також підтримує обертання та перевертання вашого зображення за допомогою лише кількох рядків коду. Ви можете легко повернути зображення на заданий кут проти годинникової стрілки. Параметр кута - це кут повороту в градусах.
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
}