图片保存和导出图片-GDI+ 中发生一般性异常(保存图片报错)System.Runtime.InteropServices.ExternalException:“GDI+ 中发生一般性错误。

执行 pictureBox1.Image.Save报错:

System.Runtime.InteropServices.ExternalException:“GDI+ 中发生一般性错误。”

用Bitmap解决

  /// <summary>
        /// 保存图片
        /// </summary>
        /// <param name="image">图片</param>
        /// <param name="saveAllPath">全路径(包含文件名)</param>
        /// <returns></returns>
        public static bool SaveImage(Image image, string saveAllPath)
        {
            ImageFormat imageFormat = ImageFormat.Jpeg;
            if (saveAllPath.ToLower().EndsWith(".png"))
            {
                imageFormat = ImageFormat.Png;
            }
            else if (saveAllPath.ToLower().EndsWith(".bmp"))
            {
                imageFormat = ImageFormat.Bmp;
            }
            else if (saveAllPath.ToLower().EndsWith(".icon"))
            {
                imageFormat = ImageFormat.Icon;
            }
            else if (saveAllPath.ToLower().EndsWith(".jpeg"))
            {
                imageFormat = ImageFormat.Jpeg;
            }
            else if (saveAllPath.ToLower().EndsWith(".gif"))
            {
                imageFormat = ImageFormat.Gif;
            }
            using (Bitmap bitmap = new Bitmap(image))
            {
                bitmap.Save(saveAllPath, imageFormat);
            }
            return true;
        }

 

 

其他代码封装:

         /// <summary>        
         /// 支持各种图片
        /// </summary>
        /// <param name="imgPath">照片全路径C:\\桌面\\1.png</param>
        /// <returns></returns>
        public static byte[] GetBytesByImagePath(string imgPath)
        {
            byte[] imageBytes = File.ReadAllBytes(imgPath);
            return imageBytes;
        }

         /// <summary>
        /// 如果是jpg格式会报GDI+一般性错误
        /// </summary>
        public static byte[] GetBytesByImage(this Image img)
        {

            //将Image转换成流数据,并保存为byte[]
            ImageConverter _imageConverter = new ImageConverter();
            byte[] xByte = (byte[])_imageConverter.ConvertTo(img, typeof(byte[]));
            return xByte;
        }

 

  //他喵的直接报错,不知道微软还保留的原因是什么
 // pictureBox1.Image.Save(saveFileDialog.FileName, imageFormat);
 
posted @ 2023-09-13 14:21  博客YS  阅读(710)  评论(0)    收藏  举报