首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

GDI+一般性异常。 byte[]转换为图像的时候

2012-12-17 
GDI+一般性错误。 byte[]转换为图像的时候。 //创建新图位图Image im byteArrayToImage(imgbyte)Bitmap b

GDI+一般性错误。 byte[]转换为图像的时候。
 //创建新图位图   
                   Image im = byteArrayToImage(imgbyte);
                    Bitmap bitmap = new Bitmap(width, height);
                    //创建作图区域   
                    Graphics graphic = Graphics.FromImage(bitmap);
                    graphic.DrawImage(im, 0, 0, new Rectangle(x, y, width, height), GraphicsUnit.Pixel);
                    //从作图区生成新图
                            IntPtr pr = bitmap.GetHbitmap();
                            Image MyImage = Image.FromHbitmap(pr);
                            DeleteObject(pr);
                           byte[] tmpbyte = imageToByteArray(MyImage);                   
                           
                            Image newimage = byteArrayToImage(tmpbyte);
                            byteslen += tmpbyte.Length;
                            x = x + width;
                            newimage .Save("C:\\newfilepath\\im.jpg", ImageFormat.Jpeg); //GDI一般性错误                         
                            MyImage.Dispose();
                     如果是: MyImage.Save("C:\\newfilepath\\im.jpg", ImageFormat.Jpeg);//这个没有问题。

        /// <summary>
        /// byte[]数组转换为 Image
        /// </summary>
        /// <param name="byteArrayIn"></param>


        /// <returns></returns>
        public static System.Drawing.Image byteArrayToImage(byte[] byteArrayIn)
        {
            
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArrayIn))
            {
                System.Drawing.Image im= System.Drawing.Image.FromStream(ms);
                return im;
            }
        }
        /// <summary>
        /// Image 转换为 byte[]数组
        /// </summary>
        /// <param name="imageIn"></param>
        /// <returns></returns>
        public static byte[] imageToByteArray(System.Drawing.Image imageIn)
        {
           
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                return ms.ToArray();
            }
        }                    

[最优解释]
解决了?恭喜。
[其他解释]
byte[] tmpbyte = imageToByteArray(MyImage);   
    
Image newimage = byteArrayToImage(tmpbyte);

这个转换后的图片本身应该没有问题,有使用 picbox.Image = newimage 可以正常显示。
但picbox.save 还是会出现GDI错误。

[其他解释]
问题解决,有接分的没= = 。
[其他解释]
怎么解决的啊。。。

热点排行