LibGD

 
 

Open Source C-bibliotheek voor geavanceerde beeldverwerking

Gratis C  API waarmee ontwikkelaars snel afbeeldingen kunnen tekenen, lijnen, bogen, tekst, meerdere kleuren kunnen toevoegen en het resultaat kunnen uitschrijven als een PNG- of JPEG-bestand.

Digitale afbeeldingen trekken altijd meer bezoekers dan simpele tekst. Een foto zegt meer dan duizend woorden. Ze hebben de kracht om 94% meer weergaven aan te trekken en meer bezoekers aan te trekken. Het is altijd vruchtbaarder en handiger om uw berichten met afbeeldingen af te leveren. Met de open source-bibliotheek LibGD kunnen programmeurs snel afbeeldingen tekenen, lijnen, bogen, tekst en meerdere kleuren toevoegen en het resultaat wegschrijven als een PNG- of JPEG-bestand.

LibGD is een krachtige grafische bibliotheek die softwareontwikkelaars helpt bij het dynamisch genereren en beheren van afbeeldingen in hun C-toepassingen. De bibliotheek kan veel verschillende beeldformaten lezen en schrijven, zoals BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM en nog veel meer. De bibliotheek LibGD wordt vaak gebruikt voor het ontwikkelen van websites, maar kan ook worden gebruikt met elke zelfstandige toepassing. De bibliotheek heeft verschillende belangrijke functies voor het maken en manipuleren van afbeeldingen, zoals het genereren van grafieken, afbeeldingen, miniaturen en bijna alles, on-the-fly.

Previous Next

Aan de slag met LibGD

De aanbevolen manier om LibGD te installeren is het gebruik van CMake. Gebruik de volgende opdracht voor een vlotte installatie:

Installeer LibGD via GitHub.

$ make install 

Kloon de nieuwste bronnen met behulp van de volgende opdracht:

Installeer LibGD via GitHub.

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

Genereer en wijzig afbeeldingen via C

De LibGD-bibliotheek biedt de mogelijkheid om gemakkelijk afbeeldingen te maken en te manipuleren. Hiermee kunnen afbeeldingen worden gemaakt in BMP-, GIF-, TGA-, WBMP-, JPEG-, PNG-, TIFF-, WebP-, XPM-bestandsindelingen met slechts een paar regels C-code. Een geweldige functie van de bibliotheek is dat je hiermee on-the-fly afbeeldingen kunt maken. De bibliotheek staat bekend om het on-the-fly maken van afbeeldingen die op webpagina's kunnen worden gebruikt. Hiermee kunt u programmatisch een afbeelding maken, deze inkleuren, erop tekenen en deze gemakkelijk op schijf opslaan.

Genererende Modificatie Image via CAPI

    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);
    

Formaat van afbeelding wijzigen via C Library

De open source LibGD-bibliotheek stelt computerprogrammeurs in staat om hun afbeeldingen on-the-fly te wijzigen met behulp van C-commando's in hun applicaties. Om te beginnen moet u het volledige pad en de naam van de afbeelding opgeven om te laden. Als het klaar is, moet u de breedte en hoogte van uw nieuwe afbeelding opgeven en de uitvoerlocatie van uw keuze waar u deze wilt opslaan. Zorg ervoor dat alle verstrekte informatie correct is, behalve dat de bibliotheek deze niet accepteert en een uitzondering maakt.

Resize Image via CAPI

    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;
}
    

Crop, Flip, Convert of Rotate Images via C API

De LibGD bibliotheek heeft volledige ondersteuning voor programmeurs en beelden van C commando's. De bibliotheek heeft meerdere functies verstrekt voor het omdraaien van het beeld, zoals de beeldhorizontaal of verticaal en ook verticaal. Zelfde als flippen kun je ook makkelijk verrotten volgens je eigen behoeften. Als je de beelden met gemak kunt bewaren. Het geeft ook steun voor het omzetten van NG en JPEG beelden aan andere ondersteunende bestanden.

Verander NG Image naar AIF via CAPI

   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;
}

Afbeelding laden uit buffer in geheugen

Met de open source bibliotheek LibGD kunnen softwareontwikkelaars een volledige afbeelding laden om in het geheugen in hun eigen C-applicaties te bufferen. Zodra de afbeelding is geladen, kunnen ontwikkelaars gemakkelijk verschillende bewerkingen op de afbeelding uitvoeren, zoals het lezen van de afbeelding uit de buffer, het wijzigen van de afbeelding, het opslaan van de afbeelding op een bepaalde locatie, enzovoort. Als u klaar bent, vergeet dan niet om de buffer vrij te maken met normale geheugenbeheerfuncties.

 Dutch