Libreria Go open source per la creazione e la manipolazione di immagini
Potente API Go che supporta Ridimensiona, Ritaglia e Ruota immagini JPEG, PNG, GIF, TIFF e BMP. È inoltre possibile regolare la luminosità dell'immagine, il contrasto, la correzione gamma delle immagini.
L'API Go Imaging open source è un pacchetto molto potente che fornisce funzionalità complete relative alla creazione e manipolazione delle immagini. La libreria è molto flessibile e consente agli sviluppatori di creare facilmente nuove immagini e modificare quelle esistenti con solo un paio di righe di codice.
L'Imaging è una libreria Go pura di piccole dimensioni ed efficiente in termini di funzionalità. Ha incluso il supporto per diversi importanti formati di file immagine come JPEG, PNG, GIF, TIFF, BMP e molti altri. La libreria include anche diversi filtri di ricampionamento per il ridimensionamento delle immagini. Alcuni filtri importanti sono NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box e così via. La libreria ha anche facilitato gli sviluppatori a creare filtri personalizzati.
La libreria gratuita di imaging ha incluso diverse importanti funzionalità relative all'elaborazione delle immagini, come il ridimensionamento delle immagini, la rotazione dell'immagine, il ritaglio dell'immagine, la regolazione della luminosità dell'immagine, la regolazione del contrasto dell'immagine, la correzione della gamma delle immagini, la modifica della saturazione dell'immagine, la clonazione delle immagini, l'immagine sfocatura, codifica e decodifica di immagini, sovrapposizione di immagini, aggiunta di nitidezza, creazione di miniature e molte altre funzionalità.
Iniziare con l'imaging
Il modo più semplice e consigliato per installare Imaging è tramite GitHub.
Installa l'imaging tramite GitHub
go get -u github.com/disintegration/imaging
Genera nuova immagine tramite l'API Go
La libreria di imaging open source include il supporto per la generazione di nuove immagini all'interno della propria applicazione utilizzando i comandi Go. La nuova creazione dell'immagine richiede la larghezza, l'altezza, il colore di sfondo dell'immagine e il formato di output dell'immagine. Puoi anche modificare facilmente l'immagine creata ed eseguire diverse operazioni come capovolgere, impostare l'opacità, sfumare, sfocare e molto altro.
Genera nuova immagine tramite l'API Go
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),
}
}
Conversione di immagini in altri formati tramite Go
Gli sviluppatori di software possono convertire facilmente le loro immagini in altri formati di file supportati all'interno delle proprie app GO utilizzando una libreria di immagini gratuita. Devi solo fornire il nome dell'immagine e il formato dell'immagine di output. Usando la funzione Salva puoi facilmente esportare le immagini in molti altri formati di file immagine supportati come PNG, BMP, GIF, JPEG, TIFF e altri.
Ridimensiona e ritaglia le immagini
L'API di imaging gratuita include funzionalità per ridimensionare le immagini in base alle proprie esigenze utilizzando i comandi Go. Innanzitutto, devi aprire un'immagine e fornire l'altezza e la larghezza dell'immagine per ridimensionarla. Un'altra opzione è che puoi ridimensionare l'immagine fornendo semplicemente la larghezza preservando le proporzioni. La libreria consente anche il ritaglio dell'immagine originale fornendo larghezza e altezza personalizzate e utilizzando l'ancora centrale.
Riduci immagine via 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)
}
Capovolgi, ruota, sfoca e clona immagini
La libreria Imaging ha incluso diverse funzionalità importanti per la manipolazione delle immagini come capovolgimento delle immagini, rotazione, sfocatura e clonazione dell'immagine. Per fare una copia di un'immagine esistente devi solo chiamare la funzione Clona e fornire l'immagine esistente. La libreria supporta anche la rotazione e il capovolgimento dell'immagine con solo un paio di righe di codice. È possibile ruotare facilmente un'immagine dell'angolo specificato in senso antiorario. Il parametro dell'angolo è l'angolo di rotazione in gradi.
Immagine clonata via 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
}