LibGD
مكتبة مفتوحة المصدر C لمعالجة الصور المتقدمة
واجهة برمجة تطبيقات C مجانية تتيح للمطورين رسم الصور بسرعة وإضافة خطوط وأقواس ونص وألوان متعددة وكتابة النتيجة كملف 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 الخاصة بهم. بمجرد تحميل الصورة ، يمكن للمطورين إجراء عمليات مختلفة بسهولة على الصورة ، مثل قراءة الصورة من المخزن المؤقت ، وتعديل الصورة ، وحفظ الصورة في موقع معين ، وما إلى ذلك. بمجرد الانتهاء من ذلك ، يرجى تذكر تحرير المخزن المؤقت بوظائف إدارة الذاكرة العادية.