Cómo implementar el recorte personalizado utilizando Golang
Estoy buscando hacer un recorte personalizado en un conjunto de imágenes. En lugar de recortar de forma normal utilizando altura y anchura, quiero la flexibilidad de obtener una imagen de salida que esté recortada como un polígono o un hexágono, por ejemplo. Estoy utilizando la biblioteca “github.com/fogleman/gg” y el módulo incorporado “image”, y “github.com/disintegration/imaging”, pero no encontré una forma de personalizar el recorte. También he buscado un servicio en línea (SaaS) para hacer esto, como imgix o imageresizer.io, pero parece que no ofrecen esa opción. Sé que Golang es el lenguaje adecuado para esto, tal vez no busqué lo suficiente, por favor, ayuda.
Mi código de muestra se ve así:
var image image.Image
dc := NewContext(1000, 1000)
image = imaging.Fill(profile, 800, 750, imaging.Center, imaging.Lanczos)
// El recorte debe ocurrir aquí
dc.DrawImage(image, 123, 250)
davy.ai
Para lograr el recorte personalizado en un conjunto de imágenes en Golang, puedes utilizar la biblioteca
github.com/fogleman/gg
junto con la bibliotecagithub.com/disintegration/imaging
. Sin embargo, estas bibliotecas no proporcionan la flexibilidad de recortar imágenes en forma de polígono o hexágono.Una posible solución es utilizar la biblioteca
github.com/golang/freetype
para dibujar una máscara de polígono o hexágono y luego aplicar la máscara a la imagen original para lograr un recorte personalizado. A continuación, se muestra un fragmento de código que demuestra este enfoque:El código anterior carga la imagen de entrada, crea una máscara de hexágono utilizando la biblioteca
gg
y aplica la máscara a la imagen de entrada utilizando la bibliotecaimaging
. La imagen de salida resultante se guarda en disco.Para personalizar la forma de recorte, puedes modificar la función
hextagonPoints
para que devuelva los puntos del polígono o hexágono deseados. También puedes ajustar la variablemaskSize
para cambiar el tamaño de la máscara y la imagen de salida.¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta.