图片保存和导出图片-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 @   博客YS  阅读(552)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示