1. Produkty
  2.   Obraz
  3.   LibGD

LibGD

 
 

Biblioteka Open Source C do zaawansowanego przetwarzania obrazu

Darmowy interfejs C  API, który umożliwia programistom szybkie rysowanie obrazów, dodawanie linii, łuków, tekstu i wielu kolorów oraz zapisywanie wyniku w postaci pliku PNG lub JPEG.

Obrazy cyfrowe zawsze przyciągają więcej odwiedzających niż zwykły tekst. Obraz jest wart tysiąca słów. Mają moc przyciągania 94% większej liczby wyświetleń i angażowania większej liczby odwiedzających. Zawsze bardziej owocne i wygodne jest dostarczanie wiadomości za pomocą obrazów. Biblioteka open source LibGD umożliwia programistom szybkie rysowanie obrazów, dodawanie linii, łuków, tekstu, wielu kolorów i zapisywanie wyniku w postaci pliku PNG lub JPEG.

LibGD to potężna biblioteka graficzna, która pomaga programistom w dynamicznym generowaniu i zarządzaniu obrazami w ich aplikacjach C. Biblioteka może odczytywać i zapisywać wiele różnych formatów obrazów, takich jak BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM i wiele innych. Biblioteka LibGD jest powszechnie używana do tworzenia stron internetowych, ale może być również używana z dowolną samodzielną aplikacją. Biblioteka zawiera kilka ważnych funkcji do tworzenia i manipulowania obrazami, takich jak generowanie wykresów, grafik, miniatur i przede wszystkim wszystkiego innego w locie.

Previous Next

Pierwsze kroki z LibGD

Zalecanym sposobem instalacji LibGD jest użycie CMake. Aby uzyskać płynną instalację, użyj następującego polecenia

Zainstaluj LibGD przez GitHub.

$ make install 

Sklonuj najnowsze źródła za pomocą następującego polecenia

Zainstaluj LibGD przez GitHub.

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

Generuj i modyfikuj obrazy za pomocą C

Biblioteka LibGD zapewnia możliwość łatwego tworzenia i manipulowania obrazami. Pozwala na tworzenie obrazów w formatach BMP, GIF, TGA, WBMP, JPEG, PNG, TIFF, WebP, XPM za pomocą zaledwie kilku linijek kodu C. Jedną wielką cechą biblioteki jest to, że umożliwia tworzenie obrazów w locie. Biblioteka znana jest z tworzenia obrazów w locie, które można wykorzystać na stronach internetowych. Umożliwia programowe tworzenie obrazu, kolorowanie go, rysowanie na nim i łatwe zapisywanie na dysku.

Generuj i modyfikuj obrazy za pomocą 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);
    

Zmiana rozmiaru obrazu za pomocą biblioteki C

Biblioteka LibGD o otwartym kodzie źródłowym umożliwia programistom komputerowym zmianę rozmiaru obrazów w locie za pomocą poleceń C w swoich aplikacjach. Aby rozpocząć, musisz podać pełną ścieżkę i nazwę obrazu do załadowania. Po zakończeniu musisz podać szerokość i wysokość nowego obrazu oraz wybraną lokalizację wyjściową, w której chcesz go zapisać. Upewnij się, że wszystkie podane informacje są poprawne poza biblioteką, która ich nie akceptuje i zgłasza wyjątek.

Zmień rozmiar obrazu przez 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;
}
    

Przycinaj, przerzucaj, konwertuj lub obracaj obrazy za pomocą interfejsu API C

Biblioteka LibGD zapewniła pełną obsługę programowego przycinania i przerzucania obrazów za pomocą poleceń C. Biblioteka zapewnia wiele funkcji do odwracania obrazu, takich jak odwracanie obrazu w poziomie lub w pionie, a także obie. Podobnie jak przerzucanie, możesz również łatwo obracać go zgodnie z własnymi potrzebami. Po zakończeniu możesz z łatwością zapisać obrazy. Zapewnia również obsługę konwersji obrazów PNG i JPEG na inne obsługiwane formaty plików.

Konwertuj obraz PNG na AVIF przez 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;
}

Ładowanie obrazu z bufora w pamięci

Biblioteka LibGD o otwartym kodzie źródłowym umożliwia programistom ładowanie całego obrazu do buforowania w pamięci we własnych aplikacjach C. Po załadowaniu obrazu programiści mogą łatwo wykonywać różne operacje na obrazie, takie jak odczytywanie obrazu z bufora, modyfikowanie obrazu, zapisywanie obrazu w określonej lokalizacji i tak dalej. Po zakończeniu pamiętaj o zwolnieniu bufora przy normalnych funkcjach zarządzania pamięcią.

 Polski