bitmap.Save错误

时间:2012-08-31 02:01:25

标签: c# .net asp.net-mvc-3

发生错误的原因是什么?

outputStream  cannot be null

谢谢!

public FileContentResult DisplayFont(string fontID)
        {
            int fontSize = 12;

            string fontName = "Arial";

            System.Drawing.Font rectangleFont = new System.Drawing.Font(fontName, fontSize, FontStyle.Bold);

            int height = 150;

            int width = 250;

            Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb);

            Graphics g = Graphics.FromImage(bitmap);

            g.SmoothingMode = SmoothingMode.AntiAlias;

            Color backgroundColor = Color.White;

            g.Clear(backgroundColor);

            g.DrawString(fontName, rectangleFont,SystemBrushes.WindowText, new PointF(10, 40));

            Stream outputStream = null;

            bitmap.Save(outputStream,  ImageFormat.Jpeg); // ERROR

            byte[] byteArray = ReadFully(outputStream);

            g.Dispose();

            bitmap.Dispose(); 

            return new FileContentResult(byteArray, "image/jpeg");
        }



 public static byte[] ReadFully(Stream input)
        {
            byte[] buffer = new byte[16 * 1024];
            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }
                return ms.ToArray();
            }
        }

2 个答案:

答案 0 :(得分:3)

OutputStream为空。它应该是,

 Stream outputStream = new MemoryStream();

编辑:

int height = 150;
int width = 250;
byte []byteArray=null;

using (Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb))
{
    int fontSize = 12;
    string fontName = "Arial";
    System.Drawing.Font rectangleFont = new System.Drawing.Font(fontName, fontSize, FontStyle.Bold);
    Graphics g = Graphics.FromImage(bitmap);
    g.SmoothingMode = SmoothingMode.AntiAlias;
    Color backgroundColor = Color.White;
    g.Clear(backgroundColor);
    g.DrawString(fontName, rectangleFont, SystemBrushes.WindowText, new PointF(10, 40));

    using (MemoryStream outputStream = new MemoryStream())
    {
        bitmap.Save(outputStream, ImageFormat.Jpeg);
        byteArray = outputStream.ToArray();
    }
}

答案 1 :(得分:0)

我找到了解决方案。

应该是

MemoryStream outputStream = new MemoryStream();

bitmap.Save(outputStream,  ImageFormat.Jpeg);

byte[] byteArray = outputStream.ToArray();