如何在.NET中生成GIF图像?
是否有一个.NET库可用于以编程方式生成自己的GIF图像 至少我想一个像素一个像素地构建它。更好的方法是支持文本和形状 这是一个我正在尝试做的例子。我在Photoshop上模拟了这个如何在.NET中生成GIF图像?,.net,image,gif,image-generation,.net,Image,Gif,Image Generation,是否有一个.NET库可用于以编程方式生成自己的GIF图像 至少我想一个像素一个像素地构建它。更好的方法是支持文本和形状 这是一个我正在尝试做的例子。我在Photoshop上模拟了这个 您有什么建议?为什么不使用图表控件而不是尝试生成GIF?除非严格要求生成这个特定的GIF,否则我认为使用图表控件可以为您提供更大的灵活性 我喜欢。您将能够读/写GIF,并从整个布料中创建GIF。桌面应用程序的运行时免版税,为服务器授权。为什么不使用System.Drawing命名空间?你需要的一切都应该在里面 B
您有什么建议?为什么不使用图表控件而不是尝试生成GIF?除非严格要求生成这个特定的GIF,否则我认为使用图表控件可以为您提供更大的灵活性 我喜欢。您将能够读/写GIF,并从整个布料中创建GIF。桌面应用程序的运行时免版税,为服务器授权。为什么不使用System.Drawing命名空间?你需要的一切都应该在里面
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);
作业完成注意,除了
bmp.Save(文件名,ImageFormat.Gif)之外代码>方法,有一个bmp.Save(stream,ImageFormat.Gif)
允许您创建图像并将其输出到网页,而无需将其保存到服务器硬盘。以下是使用System.Drawing
命名空间中的类执行此操作的开始。它用两个框画了一条线,以演示对图形的支持,而不仅仅是简单地设置像素
// 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();
}
}
}
Stephen Walther(2002年2月22日)关于如何使用HTTPHandler创建图像并以流形式发送(使用此处已发布的图像代码)的示例
使用:
确切地阅读System.Drawing namespace以了解如何绘制所需的线条等。尽管从技术上讲,您无法使用图形对象设置像素(您可以填充1像素的矩形)。SetPixel和GetPixel位于位图对象上。我将得到适当的更正。注释应为“使用g和/或bmp…”接受与否,这似乎不允许GIF图像中的动画。(并不是说我认为网络需要更多,而是为了完成。)制作动画GIF需要什么?不需要。但这个问题并没有限制对.NET Framework的回答。它说的是一个“.net库”。实际上,它现在是:实际上,您应该能够跳过二进制流并将其直接写入resose:bmp.Save(Response.OutputStream,ImageFormat.Gif);是否有任何特别的原因是需要.gif格式的图像?我能想到的使用.gif的唯一原因是图像是否需要设置动画。如果不是,其他格式(如png和jpg)提供更好的压缩率和更大的灵活性…没有特别的原因。GIF是一种简单的无损格式,与web浏览器兼容。
<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; } }
}