1. Produkter
  2.   Billede
  3.   LibGD

LibGD

 
 

Open Source C-bibliotek til avanceret billedbehandling

Gratis C  API, der gør det muligt for udviklere hurtigt at tegne billeder, tilføje linjer, buer, tekst, flere farver og skrive resultatet ud som en PNG- eller JPEG-fil.

Digitale billeder tiltrækker altid flere besøgende end simpel tekst. Et billede siger mere end tusind ord. De har magten til at tiltrække 94 % flere visninger og engagere flere besøgende. Det er altid mere frugtbart og bekvemt at levere dine beskeder ved hjælp af billeder. Open source-biblioteket LibGD gør det muligt for programmører hurtigt at tegne billeder, tilføje linjer, buer, tekst, flere farver og udskrive resultatet som en PNG- eller JPEG-fil.

LibGD er et kraftfuldt grafikbibliotek, der hjælper s softwareudviklere med dynamisk at generere og administrere billeder inde i deres C-applikationer. Biblioteket kan læse og skrive mange forskellige billedformater såsom BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM og meget mere. Biblioteket LibGD bruges almindeligvis til hjemmesideudvikling, men kan også bruges med enhver selvstændig applikation. Biblioteket har inkluderet flere vigtige funktioner til billedoprettelse og -manipulation, såsom generering af diagrammer, grafik, miniaturebilleder og det meste andet, på farten.

Previous Next

Kom godt i gang med LibGD

Den anbefalede måde at installere LibGD på er at bruge CMake. Brug venligst følgende kommando til glatte installationer

Installer LibGD via GitHub.

$ make install 

Klon de seneste kilder ved hjælp af følgende kommando

Installer LibGD via GitHub.

$ git https://github.com/libgd/libgd.git 

Generer og rediger billeder via C

LibGD-biblioteket giver mulighed for at skabe og manipulere billeder med lethed. Det giver mulighed for at bruge oprettelsen af billeder i BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM filformater med blot et par linjer C-kode. En stor egenskab ved biblioteket er, at det lader dig skabe billeder på farten. Biblioteket er kendt for at skabe billeder i farten, som kan bruges på websider. Det giver dig mulighed for programmæssigt at oprette et billede, farvelægge det, tegne på det og gemme det på disk med lethed.

Generer og modificer billeder via 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);
    

Ændring af billedstørrelse via C-bibliotek

Open source LibGD-biblioteket gør det muligt for computerprogrammører at ændre størrelsen på deres billeder med det samme ved hjælp af C-kommandoer i deres applikationer. For at starte skal du angive den komplette sti og navnet på billedet til indlæsning. Når det er gjort, skal du angive bredden og højden af dit nye billede og outputplaceringen efter eget valg, hvor du vil gemme det. Sørg for, at alle de angivne oplysninger er korrekte, bortset fra at biblioteket ikke accepterer dem og afgiver en undtagelse.

Ændr størrelse på billede via 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;
}
    

Beskær, vend, konverter eller roter billeder via C API

LibGD-biblioteket har ydet komplet support til programmatisk beskæring og spejlvending af billeder ved hjælp af C-kommandoer. Biblioteket har givet flere funktioner til at vende billedet, såsom at vende billedet vandret eller lodret såvel som begge dele. Det samme som at vende, kan du også nemt rotere det efter dine egne behov. Når du er færdig, kan du nemt gemme billederne. Det giver også støtte til konvertering af PNG- og JPEG-billeder til andre understøttede filformater.

Konverter PNG-billede til AVIF via 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;
}

Billede indlæses fra buffer i hukommelsen

Open source-biblioteket LibGD giver softwareudviklere mulighed for at indlæse et helt billede til buffer i hukommelsen inde i deres egne C-applikationer. Når først billedet er indlæst, kan udviklere nemt udføre forskellige handlinger på billedet, såsom at læse billedet fra bufferen, ændre billedet, gemme billedet til et bestemt sted og så videre. Når du er færdig, skal du huske at frigøre bufferen med normale hukommelsesstyringsfunktioner.

 Dansk