LibGD

 
 

مكتبة مفتوحة المصدر C لمعالجة الصور المتقدمة

واجهة برمجة تطبيقات C مجانية تتيح للمطورين رسم الصور بسرعة وإضافة خطوط وأقواس ونص وألوان متعددة وكتابة النتيجة كملف PNG أو JPEG.

تجذب الصور الرقمية دائمًا زوارًا أكثر من النص البسيط. صورة تساوي ألف كلمة. لديهم القدرة على جذب 94٪ المزيد من المشاهدات وإشراك المزيد من الزوار. من الأفضل دائمًا توصيل رسائلك باستخدام الصور وأكثر ملاءمة. مكتبة LibGD مفتوحة المصدر تمكن المبرمجين من رسم الصور بسرعة وإضافة خطوط وأقواس ونص وألوان متعددة وكتابة النتيجة كملف PNG أو JPEG.

LibGD هي مكتبة رسومات قوية تساعد مطوري البرامج على إنشاء وإدارة الصور ديناميكيًا داخل تطبيقات C. يمكن للمكتبة قراءة وكتابة العديد من تنسيقات الصور المختلفة مثل BMP و GIF و TGA و WBMP و JPEG و PNG و TIFF و WebP و XPM وغير ذلك الكثير. تُستخدم مكتبة LibGD بشكل شائع لتطوير مواقع الويب ولكن يمكن استخدامها أيضًا مع أي تطبيق مستقل. تضمنت المكتبة العديد من الميزات المهمة لإنشاء الصور ومعالجتها مثل إنشاء المخططات والرسومات والصور المصغرة ومعظم أي شيء آخر أثناء التنقل.

Previous Next

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

 عربي