当前位置:编程学习 > C#/ASP.NET >>

合并图片时报GDI+ 中发生一般性错误。

 protected void Button1_Click(object sender, EventArgs e)
        {
            Bitmap[] bp = new Bitmap[4];
            bp[0] = new Bitmap(Server.MapPath("images/1.jpg"));
            bp[1] = new Bitmap(Server.MapPath("images/2.jpg"));
            bp[2] = new Bitmap(Server.MapPath("images/3.jpg"));
            bp[3] = new Bitmap(Server.MapPath("images/4.jpg"));
            Bitmap b = MergerImg(bp);
            b.Save(Server.MapPath("images/5.jpg"));        }
        #region 合并图片
        /// <summary>
        /// 合并图片
        /// </summary>
        /// <param name="maps"></param>
        /// <returns></returns>
        private Bitmap MergerImg(params Bitmap[] maps)
        {
            int i = maps.Length;
            if (i == 0)
                throw new Exception("图片数不能够为0");

            //创建要显示的图片对象,根据参数的个数设置宽度
            Bitmap backgroudImg = new Bitmap(maps[i-1].Width,i * maps[i-1].Height);
            Graphics g = Graphics.FromImage(backgroudImg);

            //清除画布,背景设置为白色
            g.Clear(System.Drawing.Color.White);

            for (int j = 0; j < i; j++)
            {
                g.DrawImage(maps[j], 0, j * maps[j].Height, maps[j].Width, maps[j].Height);
            }

            g.Dispose();
            //backgroudImg.Dispose();            
            return backgroudImg;
        }
        #endregion

我的程序中如果不写backgroudImg.Dispose(),就说是GDI+ 中发生一般性错误。如果写了这句就说b.Save(Server.MapPath("images/5.jpg"))这里的参数无效,我都快崩溃了。到底应该怎么改啊。而且我合并的图为什么跟原图的大小不一样呢。我合并的图的大小都是一样大的。请帮忙啊。 --------------------编程问答--------------------  换一下顺序试试
 b.Save(Server.MapPath("images/5.jpg"));
backgroudImg.Dispose();
--------------------编程问答-------------------- 而且我合并的图为什么跟原图的大小不一样呢。

是长宽不一样,还是文件大小不一样?
把Save的那个文件类型的参数加上试试,注意不是文件后缀
b.Save(Server.MapPath("images/5.jpg"));
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,