LibGD
ספריית קוד פתוח C לעיבוד תמונות מתקדם
ממשק API חינמי המאפשר למפתחים לצייר במהירות תמונות, להוסיף קווים, קשתות, טקסט, צבעים מרובים ולכתוב את התוצאה כקובץ PNG או JPEG.
תמונות דיגיטליות תמיד מושכות יותר מבקרים מאשר טקסט פשוט. תמונה שווה אלף מילים. יש להם את הכוח למשוך 94% יותר צפיות ולמשוך יותר מבקרים. זה תמיד יותר פורה ונוח להעביר את המסרים שלך באמצעות תמונות. ספריית הקוד הפתוח LibGD מאפשרת למתכנתים לצייר במהירות תמונות, להוסיף קווים, קשתות, טקסט, צבעים מרובים ולכתוב את התוצאה כקובץ PNG או JPEG.
LibGD היא ספריית גרפיקה רבת עוצמה המסייעת למפתחי תוכנה ליצור ולנהל תמונות באופן דינמי בתוך יישומי C שלהם. הספרייה יכולה לקרוא ולכתוב פורמטים רבים ושונים של תמונות כגון BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM ועוד הרבה יותר. הספרייה LibGD משמשת בדרך כלל לפיתוח אתרים, אך ניתן להשתמש בה גם עם כל אפליקציה עצמאית. הספרייה כללה מספר תכונות חשובות ליצירת תמונות ומניפולציה כגון יצירת תרשימים, גרפיקה, תמונות ממוזערות, וכמעט כל דבר אחר, תוך כדי תנועה.
תחילת העבודה עם LibGD
הדרך המומלצת להתקנת LibGD היא באמצעות CMake. אנא השתמש בפקודה הבאה להתקנות חלקות
התקן את LibGD דרך GitHub.
$ make install
שכפל את המקורות העדכניים ביותר באמצעות הפקודה הבאה
התקן את LibGD דרך GitHub.
$ git https://github.com/libgd/libgd.git
צור ושנה תמונות באמצעות C
ספריית LibGD מספקת את היכולת ליצור ולתפעל תמונות בקלות. זה מאפשר שימוש ביצירת תמונות בפורמטים של קבצים BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM עם כמה שורות של קוד C. תכונה נהדרת אחת של הספרייה היא שהיא מאפשרת לך ליצור תמונות תוך כדי תנועה. הספרייה ידועה ביצירת תמונות תוך כדי תנועה שניתן להשתמש בהן בדפי אינטרנט. זה מאפשר לך ליצור תמונה באופן תוכנתי, לצבוע אותה, לצייר עליה ולשמור אותה בדיסק בקלות.
צור ושנה תמונות באמצעות 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);
שינוי גודל תמונה באמצעות ספריית C
ספריית הקוד הפתוח LibGD מאפשרת למתכנתי מחשבים לשנות את גודל התמונות שלהם תוך כדי שימוש באמצעות פקודות C בתוך האפליקציות שלהם. כדי להתחיל אתה צריך לספק את הנתיב המלא ואת השם של התמונה לטעינה. ברגע שזה נעשה, אתה צריך לספק את הרוחב והגובה של התמונה החדשה שלך ואת מיקום הפלט לבחירתך שבו אתה רוצה לשמור אותה. אנא ודא שכל המידע שסופק נכון מלבד שהספרייה לא מקבלת אותו וזורקת חריגה.
שנה את גודל התמונה באמצעות 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;
}
חתוך, הפוך, המר או סובב תמונות באמצעות C API
ספריית LibGD סיפקה תמיכה מלאה לחיתוך תוכנית והיפוך תמונות באמצעות פקודות C. הספרייה סיפקה פונקציות מרובות להיפוך התמונה, כגון היפוך התמונה אופקית או אנכית וגם שתיהן. כמו להעיף, אתה יכול גם לסובב אותו בקלות לפי הצרכים שלך. לאחר שתסיים תוכל לשמור את התמונות בקלות. זה גם מספק תמיכה להמרת תמונות PNG ו-JPEG לפורמטי קבצים נתמכים אחרים.
המר תמונת PNG ל-AVIF באמצעות 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;
}
טעינת תמונה ממאגר בזיכרון
ספריית הקוד הפתוח LibGD מאפשרת למפתחי תוכנה לטעון תמונה שלמה לאחסון בזיכרון בתוך יישומי C שלהם. לאחר טעינת התמונה המפתחים יכולים בקלות לבצע פעולות שונות בתמונה, כמו קריאת התמונה מהמאגר, שינוי התמונה, שמירת התמונה במיקום מסוים וכן הלאה. לאחר שתסיים, אנא זכור לשחרר את המאגר עם פונקציות ניהול זיכרון רגילות.