关于合成图片之后内存释放问题,在线等
我写了一个方法是用来合成图片,但是程序跑了一段时间,打开任务管理器查看内存占用率会不断上涨,最后报出内存溢出,求高手解决
代码如下:
private MemoryStream ms;
private Bitmap bImage;
private System.Drawing.Image img;
private Graphics g;
/// <summary>
/// 获取合成图片后的字节大小
/// </summary>
/// <param name="_al">要合成的每张图片的大小数组</param>
/// <param name="_width">合成后的宽度</param>
/// <param name="_height">合成后的高度</param>
/// <returns>byte[]</returns>
public byte[] GetCompose(ArrayList _al, int _width, int _height)
{
byte[] tp = null;
try
{
using (ms = new MemoryStream())
{
bImage = new Bitmap(_width, _height);
bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
img = System.Drawing.Image.FromStream(ms);
using (g = Graphics.FromImage(img))
{
//计算坐标代码
IList<Rectangle> rectList = CalcPanelRectangle(_al.Count, bImage.Size);
byte[] bytes;
for (int pic_i = 0; pic_i < rectList.Count; pic_i++)
{
bytes = (byte[])_al[pic_i];
using (Stream stream = new MemoryStream(bytes))
{
using (Bitmap bmp1 = new Bitmap(stream))
{
g.DrawImage(bmp1 , rectList[pic_i], 0, 0, bmp1.Width, bmp1.Height, GraphicsUnit.Pixel);
}
}
}
tp = ImageToByteArray(img);
}
}
return tp;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
经测试是由for循环里引起的,但是不知道怎么解决。 --------------------编程问答-------------------- 释放资源g.dispose()
补充:.NET技术 , C#