LibGD
Библиотека C с открытым исходным кодом для расширенной обработки изображений
Бесплатный 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. Библиотека предоставила несколько функций для переворачивания изображения, таких как горизонтальное или вертикальное изменение изображения, а также оба. Точно так же, как переворачивание, вы также можете легко вращать его в соответствии с вашими собственными потребностями. После этого вы можете сохранить изображения с легкостью. Он также обеспечивает поддержку для преобразования изображений NG и JPEG в другие поддерживаемые форматы файлов.
Перевести NG изображения в AIF через 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. Как только изображение загружено, разработчики могут легко выполнять с ним различные операции, такие как чтение изображения из буфера, изменение изображения, сохранение изображения в определенном месте и т. д. После этого не забудьте освободить буфер с помощью обычных функций управления памятью.