LibGD
Nyílt forráskódú C Library a fejlett képfeldolgozáshoz
Ingyenes C API, amellyel a fejlesztők gyorsan rajzolhatnak képeket, vonalakat, íveket, szöveget és több színt adhatnak hozzá, és az eredményt kiírhatják PNG- vagy JPEG-fájlként.
A digitális képek mindig több látogatót vonzanak, mint az egyszerű szöveg. Egy kép többet ér ezer szónál. Képesek 94%-kal több megtekintést vonzani és több látogatót vonzani. Mindig gyümölcsözőbb és kényelmesebb, ha képekkel kézbesíti üzeneteit. A LibGD nyílt forráskódú könyvtár lehetővé teszi a programozók számára, hogy gyorsan rajzoljanak képeket, vonalakat, íveket, szöveget, több színt adjanak hozzá, és az eredményt PNG vagy JPEG fájlként írják ki.
A LibGD egy hatékony grafikus könyvtár, amely segíti a szoftverfejlesztőket a C-alkalmazásokon belüli képek dinamikus létrehozásában és kezelésében. A könyvtár számos különböző képformátumot képes olvasni és írni, mint például a BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM és még sok más. A LibGD könyvtárat általában webhelyfejlesztésre használják, de bármely önálló alkalmazással is használható. A könyvtár számos fontos funkciót tartalmaz a képek létrehozásához és manipulálásához, például diagramok, grafikák, miniatűrök és sok minden más létrehozása menet közben.
A LibGD használatának megkezdése
A LibGD telepítésének javasolt módja a CMake használata. Kérjük, használja a következő parancsot a zökkenőmentes telepítéshez
Telepítse a LibGD-t a GitHubon keresztül.
$ make install
Klónozza a legújabb forrásokat a következő paranccsal
Telepítse a LibGD-t a GitHubon keresztül.
$ git https://github.com/libgd/libgd.git
Képek létrehozása és módosítása a C segítségével
A LibGD könyvtár lehetővé teszi a képek egyszerű létrehozását és kezelését. Lehetővé teszi képek létrehozását BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM fájlformátumokban, mindössze néhány soros C kóddal. A könyvtár egyik nagyszerű tulajdonsága, hogy lehetővé teszi a képek menet közbeni létrehozását. A könyvtár arról ismert, hogy menet közben hoz létre képeket, amelyeket weboldalakon lehet használni. Lehetővé teszi, hogy programozottan hozzon létre egy képet, színezze ki, rajzoljon rá, és könnyedén mentse lemezre.
Képek létrehozása és módosítása C API-n keresztül
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);
Kép átméretezése a C Library segítségével
A nyílt forráskódú LibGD könyvtár lehetővé teszi a számítógépes programozók számára, hogy menet közben átméretezzék képeiket az alkalmazásokon belüli C parancsok segítségével. Az indításhoz meg kell adnia a teljes elérési utat és a kép nevét a betöltéshez. Ha ez megtörtént, meg kell adnia az új kép szélességét és magasságát, valamint a kiválasztott kimeneti helyet, ahová menteni szeretné. Kérjük, győződjön meg arról, hogy minden megadott információ helyes, kivéve, hogy a könyvtár nem fogadja el, és kivételt tesz.
Kép átméretezése C API-n keresztül
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;
}
Vágja le, fordítsa meg, alakítsa át vagy forgassa el a képeket a C API-n keresztül
A LibGD könyvtár teljes támogatást nyújtott a képek programozott vágásához és átfordításához C parancsokkal. A könyvtár több funkciót is kínál a kép megfordításához, például a kép vízszintes vagy függőleges megfordítását, valamint mindkettőt. Ugyanúgy, mint az átfordításnál, könnyedén elforgathatja saját igényei szerint. Ha elkészült, könnyedén elmentheti a képeket. Ezenkívül támogatja a PNG és JPEG képek más támogatott fájlformátumokká való konvertálását.
Konvertálja a PNG-képet AVIF-re a C API-n keresztül
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;
}
Kép betöltése a memóriában lévő pufferből
A LibGD nyílt forráskódú könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy betöltsenek egy teljes képet, hogy puffereljenek a memóriába saját C-alkalmazásaikon belül. A kép betöltése után a fejlesztők könnyen végrehajthatnak különböző műveleteket a képpel, például kiolvashatják a képet a pufferből, módosíthatják a képet, elmenthetik a képet egy adott helyre stb. Ha végzett, ne felejtse el felszabadítani a puffert a normál memóriakezelési funkciókkal.