LibGD
Biblioteca C de código abierto para procesamiento de imágenes avanzado
API C gratuita que permite a los desarrolladores dibujar imágenes rápidamente, agregar líneas, arcos, texto, varios colores y escribir el resultado como un archivo PNG o JPEG.
Las imágenes digitales siempre atraen más visitantes que el texto simple. Una imagen vale mas que mil palabras. Tienen el poder de atraer un 94% más de vistas y atraer a más visitantes. Siempre es más fructífero y conveniente entregar sus mensajes usando imágenes. La biblioteca de código abierto LibGD permite a los programadores dibujar imágenes rápidamente, agregar líneas, arcos, texto, múltiples colores y escribir el resultado como un archivo PNG o JPEG.
LibGD es una poderosa biblioteca de gráficos que ayuda a los desarrolladores de software a generar y administrar dinámicamente imágenes dentro de sus aplicaciones C. La biblioteca puede leer y escribir muchos formatos de imagen diferentes, como BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM y muchos más. La biblioteca LibGD se usa comúnmente para el desarrollo de sitios web, pero también se puede usar con cualquier aplicación independiente. La biblioteca ha incluido varias funciones importantes para la creación y manipulación de imágenes, como la generación de tablas, gráficos, miniaturas y casi cualquier otra cosa, sobre la marcha.
Primeros pasos con LibGD
La forma recomendada de instalar LibGD es usando CMake. Utilice el siguiente comando para realizar instalaciones sin problemas
Instale LibGD a través de GitHub.
$ make install
Clona las últimas fuentes usando el siguiente comando
Instale LibGD a través de GitHub.
$ git https://github.com/libgd/libgd.git
Generar y modificar imágenes a través de C
La biblioteca LibGD brinda la capacidad de crear y manipular imágenes con facilidad. Permite utilizar la creación de imágenes en formatos de archivo BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM con solo un par de líneas de código C. Una gran característica de la biblioteca es que te permite crear imágenes sobre la marcha. La biblioteca es conocida por crear imágenes sobre la marcha que se pueden usar en páginas web. Le permite crear una imagen mediante programación, colorearla, dibujar sobre ella y guardarla en el disco con facilidad.
Generar Modificar imágenes a través de C API
gdImagePtr im;
int black, white;
FILE *out;
// Create the image
im = gdImageCreate(100, 100);
// Allocate background
white = gdImageColorAllocate(im, 255, 255, 255);
// Allocate drawing color
black = gdImageColorAllocate(im, 0, 0, 0);
// Draw rectangle
gdImageRectangle(im, 0, 0, 99, 99, black);
// Open output file in binary mode
out = fopen("rect.jpg", "wb");
// Write JPEG using default quality
gdImageJpeg(im, out, -1);
// Close file
fclose(out);
// Destroy image
gdImageDestroy(im);
Cambio de tamaño de imagen a través de la biblioteca C
La biblioteca LibGD de código abierto permite a los programadores de computadoras cambiar el tamaño de sus imágenes sobre la marcha usando comandos C dentro de sus aplicaciones. Para comenzar, debe proporcionar la ruta completa y el nombre de la imagen para cargar. Una vez hecho esto, debe proporcionar el ancho y el alto de su nueva imagen y la ubicación de salida de su elección donde desea guardarla. Asegúrese de que toda la información proporcionada sea correcta, excepto que la biblioteca no la acepte y genere una excepción.
Recuperar la imagen a través de C API
int main (int argc, char *argv[]) {
FILE *fp;
gdImagePtr in, out;
int w, h;
/* Help */
if (argc<=4) {
printf("%s input.jpg output.jpg width height\n", argv[0]);
return 1;
}
/* Size */
w = atoi(argv[3]);
h = atoi(argv[4]);
if (w<=0 || h<=0) {
fprintf(stderr, "Bad size %dx%d\n", h, w);
return 2;
}
/* Input */
fp = fopen(argv[1], "rb");
if (!fp) {
fprintf(stderr, "Can't read image %s\n", argv[1]);
return 3;
}
in = gdImageCreateFromJpeg(fp);
fclose(fp);
if (!in) {
fprintf(stderr, "Can't create image from %s\n", argv[1]);
return 4;
}
/* Resize */
gdImageSetInterpolationMethod(in, GD_BILINEAR_FIXED);
out = gdImageScale(in, w, h);
if (!out) {
fprintf(stderr, "gdImageScale fails\n");
return 5;
}
/* Output */
fp = fopen(argv[2], "wb");
if (!fp) {
fprintf(stderr, "Can't save image %s\n", argv[2]);
return 6;
}
gdImageJpeg(out, fp, 90);
fclose(fp);
/* Cleanups */
gdImageDestroy(in);
gdImageDestroy(out);
return 0;
}
Recorte, Flip, Imágenes Convertidas o Rotadas a través de C API
La biblioteca LibGD ha proporcionado soporte completo para recortar y desmontar imágenes programáticamente utilizando comandos C. La biblioteca ha proporcionado múltiples funciones para voltear la imagen, como voltear la imagen horizontal o verticalmente, así como ambas. Igual que el volteo que también se puede rotar fácilmente según sus propias necesidades. Una vez hecho, puedes guardar las imágenes con facilidad. También proporciona soporte para convertir imágenes de NG y JPEG a otros formatos de archivo compatibles.
Convertir imagen a GNA a AIF a través de C API
int main(int argc, char **argv)
{
gdImagePtr im;
FILE *in, *out;
if (argc != 3) {
fprintf(stderr, "Usage: png2avif infile.png outfile.avif\n");
exit(1);
}
printf("Reading infile %s\n", argv[1]);
in = fopen(argv[1], "rb");
if (!in) {
fprintf(stderr, "Error: input file %s does not exist.\n", argv[1]);
exit(1);
}
im = gdImageCreateFromPng(in);
fclose(in);
if (!im) {
fprintf(stderr, "Error: input file %s is not in PNG format.\n", argv[1]);
exit(1);
}
out = fopen(argv[2], "wb");
if (!out) {
fprintf(stderr, "Error: can't write to output file %s\n", argv[2]);
gdImageDestroy(im);
exit(1);
}
fprintf(stderr, "Encoding...\n");
gdImageAvifEx(im, out, 100, 0);
printf("Wrote outfile %s.\n", argv[2]);
fclose(out);
gdImageDestroy(im);
return 0;
}
Carga de imágenes desde el búfer en la memoria
La biblioteca de código abierto LibGD permite a los desarrolladores de software cargar una imagen completa para almacenarla en la memoria dentro de sus propias aplicaciones C. Una vez que se carga la imagen, los desarrolladores pueden realizar fácilmente diferentes operaciones en la imagen, como leer la imagen del búfer, modificar la imagen, guardar la imagen en una ubicación particular, etc. Una vez hecho esto, recuerde liberar el búfer con las funciones normales de administración de memoria.