5

独自の GIF 画像をプログラムで生成するために使用できる .NET ライブラリはありますか?

少なくとも、ピクセル単位でビルドしたいと思います。テキストと図形のサポートの方がよいでしょう。

これが私がやろうとしていることの例です。これをPhotoshopでモックアップしました...

数直線のグラフィック http://img143.imageshack.us/img143/5458/dollarlineot9.gif

おすすめは何ですか?

4

8 に答える 8

12
Bitmap bmp = new Bitmap(xSize, ySize, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmp)) {
  // Use g and/or bmp to set pixels, draw lines, show text, etc...
}
bmp.Save(filename, ImageFormat.Gif);

ジョブ完了

于 2008-12-08T18:28:12.230 に答える
4

この方法に加えて、サーバーのハードディスクに保存しなくても、画像を作成してWebページに出力できるbmp.Save(filename, ImageFormat.Gif);方法があることに注意してください。bmp.Save(stream, ImageFormat.Gif);

于 2008-12-08T18:33:21.347 に答える
2

System.Drawingこれが、名前空間のクラスを使用してこれを行うことの始まりです。単にピクセルを設定するよりも高いレベルでの形状のサポートを示すために、2つのボックスで線を描画します。

// add a reference to System.Drawing.dll
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Bitmap bmp = new Bitmap(400, 100);

            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.FillRectangle(Brushes.White, 0.0f, 0.0f, 400f, 100f);

                // draw line
                using (Pen p = new Pen(Color.Black, 1.0f))
                {
                    g.DrawLine(p, 0, 49, 399, 49);
                }

                // Draw boxes at start and end
                g.FillRectangle(Brushes.Blue, 0, 47, 5, 5);
                g.FillRectangle(Brushes.Blue, 394, 47, 5, 5);
            }


            bmp.Save("test.gif", ImageFormat.Gif);
            bmp.Dispose();
        }
    }
}
于 2008-12-08T18:37:05.910 に答える
1

HTTPHandlerを使用して画像を作成し、ストリームで送信する方法の例(すでにここに投稿されている画像コードを使用)。

使用する:

<img src="createChart.ashx?data=1"/>

コード:

public class CreateChart : IHttpHandler
{
     public void ProcessRequest(HttpContext context)
     {
        string data = context.QueryString["data"]; // Or get it from a POST etc

        Bitmap image = new Bitmap(xSize, ySize, PixelFormat.Format32bppArgb);
        using (Graphics g = Graphics.FromImage(Image)) 
        {
           // Use g to set pixels, draw lines, show text, etc...
        }
        BinaryStream s = new BinaryStream();

        image.Save(s, ImageFormat.Gif);

        context.Response.Clear();
        context.Response.ContentType = "image/gif";
        context.Response.BinaryWrite(s);
        context.Response.End();
     }

     public bool IsReusable { get { return false; } }
}
于 2008-12-08T18:41:21.017 に答える
1

System.Drawing 名前空間を使用しないのはなぜですか? 必要なものはすべてそこにあるはずです。

于 2008-12-08T18:27:26.553 に答える
0

Stephen WaltherによるASP.NET(2002年2月22日)を使用したオンザフライでの画像の生成

于 2008-12-08T18:39:01.850 に答える
0

GIF を生成しようとする代わりに、チャート コントロールを使用してみませんか? この特定の GIF を生成するための厳密な要件がない限り、グラフ コントロールを使用すると柔軟性が向上すると思います。

于 2008-12-08T18:23:51.583 に答える
0

私は自分の会社の製品が好きです。GIF の読み書きができ、布全体から作成できます。デスクトップ アプリではランタイム ロイヤリティ フリー、サーバーではライセンスが適用されます。

于 2008-12-08T18:25:27.990 に答える