1. 产品
  2.   图片
  3.   LibGD

LibGD

 
 

用于高级图像处理的开源 C 库

免费的 C API,使开发人员能够快速绘制图像、添加线条、弧线、文本、多种颜色,并将结果写成 PNG 或 JPEG 文件。

数字图像总是比简单的文字吸引更多的访问者。一张图片胜过千言万语。他们有能力吸引 94% 以上的浏览量并吸引更多访客。使用图像传递信息总是更有成效和方便。开源库 LibGD 使程序员能够快速绘制图像、添加线条、弧线、文本、多种颜色,并将结果写成 PNG 或 JPEG 文件。

LibGD 是一个功能强大的图形库,可帮助软件开发人员在其 C 应用程序中动态生成和管理图像。该库可以读取和写入许多不同的图像格式,例如 BMP、GIF、TGA、WBMP、JPEG、PNG、TIFF、WebP、XPM 等等。 LibGD 库通常用于网站开发,但也可以与任何独立应用程序一起使用。该库包含用于图像创建和操作的几个重要功能,例如动态生成图表、图形、缩略图和大多数其他内容。

Previous Next

LibGD 入门

安装 LibGD 的推荐方法是使用 CMake。请使用以下命令进行顺利安装

通过 GitHub 安装 LibGD。

$ make install 

使用以下命令克隆最新的源

通过 GitHub 安装 LibGD。

$ git https://github.com/libgd/libgd.git 

通过 C 生成和修改图像

LibGD 库提供了轻松创建和操作图像的能力。它允许使用 BMP、GIF、TGA、WBMP、JPEG、PNG、TIFF、WebP、XPM 文件格式创建图像,只需几行 C 代码。该库的一项重要功能是它可以让您即时创建图像。该库以动态创建可在网页上使用的图像而闻名。它使您能够以编程方式创建图像、对其着色、在其上绘图并将其轻松保存到磁盘。

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);
    

通过 C 库调整图像大小

开源 LibGD 库使计算机程序员能够在其应用程序中使用 C 命令即时调整图像大小。首先,您需要提供要加载的图像的完整路径和名称。完成后,您需要提供新图像的宽度和高度以及您选择的要保存它的输出位置。请确保所有提供的信息都是正确的,除了图书馆不接受它并抛出异常。

通过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;
}
    

CAPI的作物、翻转、转换或旋转图像

LibGD个图书馆完全支持使用C命令进行编程编辑和剪辑图像。 图书馆为翻转图像提供了多个函数、例如水平或垂直翻转图像以及两者。 像翻转一样、你也很容易根据自己的需要旋转。 一旦完成、你可以轻松地保存图像。 它还支持将NG和JPEG图像转换为其他支持的文件格式。

通过CAPI向AIF转换NG图像

   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 应用程序内的内存中。加载图像后,开发人员可以轻松地对图像执行不同的操作,例如从缓冲区读取图像、修改图像、将图像保存到特定位置等。完成后,请记住使用正常的内存管理功能释放缓冲区。

 中国人