LibGD
高度な画像処理のためのオープン ソース C ライブラリ
開発者が画像をすばやく描画し、線、円弧、テキスト、複数の色を追加し、結果を PNG または JPEG ファイルとして書き出すことを可能にする無料の C API。
デジタル画像は、単純なテキストよりも常に多くの訪問者を引き付けます。写真は千の言葉に値します。 94% 以上のビューを引き付け、より多くの訪問者を引き付ける力があります。画像を使用してメッセージを配信する方が、常に実りが多く便利です。オープン ソース ライブラリ LibGD を使用すると、プログラマは画像をすばやく描画し、線、円弧、テキスト、複数の色を追加し、結果を PNG または JPEG ファイルとして書き出すことができます。
LibGD は、ソフトウェア開発者が C アプリケーション内で画像を動的に生成および管理するのに役立つ強力なグラフィック ライブラリです。このライブラリは、BMP、GIF、TGA、WBMP、JPEG、PNG、TIFF、WebP、XPM など、さまざまな画像形式を読み書きできます。ライブラリ LibGD は一般的に Web サイトの開発に使用されますが、任意のスタンドアロン アプリケーションでも使用できます。ライブラリには、チャート、グラフィック、サムネイル、その他ほとんどのものをオンザフライで生成するなど、画像の作成と操作のための重要な機能がいくつか含まれています。
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 コードで作成できます。このライブラリの優れた機能の 1 つは、その場で画像を作成できることです。このライブラリは、Web ページで使用できる画像をオンザフライで作成することで知られています。プログラムで画像を作成し、色を付け、描画し、ディスクに保存することが簡単にできます。
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画像を他のサポートされているファイル形式に変換するためのサポートも提供しています。
C APIでNG画像をAIFに変換
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 アプリケーション内のメモリにバッファリングできます。画像が読み込まれると、開発者は、バッファからの画像の読み取り、画像の変更、特定の場所への画像の保存など、画像に対してさまざまな操作を簡単に実行できます。完了したら、通常のメモリ管理機能を使用してバッファを解放することを忘れないでください。