Open Source Go Library pro vytváření a manipulaci s obrázky
Výkonné rozhraní Go API, které podporuje změnu velikosti, oříznutí a otočení obrázků JPEG, PNG, GIF, TIFF a BMP. Můžete také upravit jas, kontrast a gama korekci obrázků.
Open source Go Imaging API je velmi výkonný balíček, který poskytuje kompletní funkce související s vytvářením obrázků a manipulací s nimi. Knihovna je velmi flexibilní a umožňuje vývojářům snadno vytvářet nové obrázky a upravovat ty stávající pomocí pouhých několika řádků kódu.
Imaging je čistá knihovna Go, která má malou velikost a efektivní funkce. Zahrnuje podporu několika důležitých formátů obrazových souborů, jako jsou JPEG, PNG, GIF, TIFF, BMP a mnoho dalších. Knihovna také obsahuje několik filtrů pro převzorkování pro změnu velikosti obrázku. Některé důležité filtry jsou NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box a tak dále. Knihovna také usnadnila vývojářům vytvářet vlastní filtry.
Bezplatná knihovna Imaging obsahuje několik důležitých funkcí souvisejících se zpracováním obrázků, jako je změna velikosti obrázků, otáčení obrázku, oříznutí obrázku, úprava jasu obrázku, úpravy kontrastu obrázku, gama korekce obrázků, změna sytosti obrázku, klonování obrázků, obrázek rozostření, kódování a dekódování obrázků, překrývání obrázků, přidávání ostrosti, vytváření miniatur a mnoho dalších funkcí.
Začínáme s Imaging
Nejjednodušší a doporučený způsob instalace Imagingis přes GitHub.
Nainstalujte Imaging přes GitHub
go get -u github.com/disintegration/imaging
Vygenerujte nový obrázek prostřednictvím rozhraní Go API
Knihovna obrázků s otevřeným zdrojovým kódem obsahuje podporu pro generování nových obrázků uvnitř jejich vlastní aplikace pomocí příkazů Go. Vytvoření nového obrázku vyžaduje šířku obrázku, výšku, barvu pozadí obrázku a výstupní formát obrázku. Můžete také snadno upravit vytvořený obrázek a provádět různé operace, jako je převrácení, nastavení krytí, prolnutí, rozostření a mnoho dalšího.
Vygenerujte nový obrázek prostřednictvím rozhraní 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),
}
}
Převod obrázků do jiných formátů přes Go
Vývojáři softwaru mohou snadno převádět své obrázky do jiných podporovaných formátů souborů v rámci svých vlastních aplikací GO pomocí bezplatné knihovny obrázků. Stačí zadat název obrázku a výstupní formát obrázku. Pomocí funkce Uložit můžete obrázky snadno exportovat do několika dalších podporovaných formátů souborů obrázků, jako jsou PNG, BMP, GIF, JPEG, TIFF a další.
Změna velikosti a oříznutí obrázků
Free imaging API obsahuje funkce pro změnu velikosti obrázků podle vašich potřeb pomocí příkazů Go. Nejprve musíte otevřít obrázek a zadat výšku a šířku obrázku, abyste mohli změnit jeho velikost. Další možností je, že můžete změnit velikost obrázku pouhým poskytnutím šířky při zachování poměru stran. Knihovna také umožňuje oříznutí původního obrázku poskytnutím vlastní šířky, výšky a pomocí středové kotvy.
Crop & Resize Image přes 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)
}
Převrátit, otočit, rozmazat a klonovat obrázky
Knihovna Imaging obsahuje několik důležitých funkcí pro manipulaci s obrázky, jako je překlápění obrázku, otáčení obrázku, rozmazání a klonování. Chcete-li vytvořit kopii existujícího obrázku, stačí zavolat funkci Klonovat a poskytnout existující obrázek. Knihovna také podporuje otáčení a převracení obrázku pomocí pouhých několika řádků kódu. Obrázek můžete snadno otočit o daný úhel proti směru hodinových ručiček. Parametr úhlu je úhel natočení ve stupních.
Clone Image přes 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
}