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.
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.