首页 > 其他分享 >GDI+一般性错误(A generic error occurred in GDI+)

GDI+一般性错误(A generic error occurred in GDI+)

时间:2022-11-20 03:11:06浏览次数:43  
标签:generic occurred Framework error GDI NET

问题

GDI+一般性错误(A generic error occurred in GDI+),

MemoryStream GetThumbnailImage(  )
        {
            Image image = Image.FromFile(@"E:\壁纸\FhdLS1EakAALOPY.jpg");
            //必须传递一共委托或者lambda表达式,但是他不会被调用
            var thumbImage = image.GetThumbnailImage(100, 100, new Image.GetThumbnailImageAbort(() => true), IntPtr.Zero);
             thumbImage.Save(@"D:\okThumb.jpg", ImageFormat.Jpeg);
            MemoryStream ms = new MemoryStream();


            return ms;
                
            

        }

 

答案:Vs权限问题,以管理员的身份运行VS2022 ,再次就可以正常生成缩略图了。

 

 

1.GDI+的前世今生

GDI+全称图形设备接口,Graphics Device Interface (GDI) ,他的爸爸叫做GDI, 用C写的。Windows XP出来以后用C++重新写了一下,变成了GDI+。从.NET Framework 1.0开始,GDI+就被正式封装在了.NET Framework里面,并被广泛地应用到了所有和图形图像相关的程序中。不幸的是,这个GDI+引入了微软有史以来最大的2个patch,造成了Microsoft IT, Support, Developer, Tester的无数麻烦。[1][2]

GDI+没有用显卡加速,所以Windows Vista推荐用Windows Display Driver Model (WDDM)了,支持渲染,3D加速。不过普通的应用程序,用GDI/GDI+其实是完全足够了,所以GDI+是在微软平台上开发图形图像程序的最好选择了。至少现在没有听说微软准备重新写GDI。

GDI+ 可以用来做图形处理,也可以做图像处理。这里只分析几个使用.NET Framework容易出错的地方。 

2. GDI+一般性错误(A generic error occurred in GDI+)

这是使用GDI+的时候最滑稽的一个Exception,里面啥信息都没有。对于刚刚开始使用.NET Framework开发者来说,很难发现这个问题到底是为什么。

我们先来看看下面一段代码 

 

string fileName = "sample.jpg";
Bitmap bmp = new Bitmap(fileName);
bmp.Save(fileName, ImageFormat.Jpeg);

这段代码的目的是要打开一个Bitmap,然后保存。可惜这段代码一定会给你一个GDI+一般性错误:

System.Runtime.InteropServices.ExternalException

其中的Error Code是0x80004005, innerException是空。如果你查Windows的Error Code表,会发现这个错误原因是“Unspecified Error”,还是什么都不知道。这其实是.NET Framework封装不好的问题,我们可以调用

标签:generic,occurred,Framework,error,GDI,NET
From: https://www.cnblogs.com/cdaniu/p/16907814.html

相关文章

  • 少走点弯路:Wiki.js 通过 Generic OAuth2 进行身份验证
    Wiki.js介绍Wiki.js是一个开源的百科全书系统,可以用来搭建自己的知识库、文档库等。官网|GitHub后续内容中的Wiki.js会用Wiki代替。本文环境:Wiki2.5.289。Wiki的......
  • C# GDI+ 画心形 跳动动画
    最近听说什么国产神剧的期中考试画心形题很火,打算跟风用C#复刻一下先看看效果:话不多说直接上代码publicForm1(){DoubleBuffered=tru......
  • Jenkins: Generic Webhook Trigger
     GitHub:PayloadURL:https://jenkins-new.jam.only.sap/generic-webhook-trigger/invoke?token=resurrect&jobQuietPeriod=1      Pipeline:pipe......
  • C# 使用GDI绘制验证码
    C#验证码使用GDI绘制验证码 首先展示一下效果图如下:C#中的GDI特别方便,很多方法我们只要简单的调用就可以实现很复杂的功能。具体实现过程如下:首先创建一个windows......
  • Generics in Python
    泛型(Generics)https://www.geeksforgeeks.org/generics-in-java/一般类的定义,其引用类是要在其代码中明确指定的但是对于一些上层公共逻辑,其期望可以应用到若干引用类中......
  • !MESSAGE Error occurred during status handling
    问题:eclipse未响应后强制关闭,之后打开eclipse一闪而过,查看.metadata中日志报错:!ENTRYorg.eclipse.ui402014-12-2212:21:33.259!MESSAGEErroroccurredduringstatu......
  • .net core在centos上使用libgdiplus库图像处理
    #Seehttps://aka.ms/containerfastmodetounderstandhowVisualStudiousesthisDockerfiletobuildyourimagesforfasterdebugging.FROMmcr.microsoft.com/......
  • Windows抓屏(1)GDI-bitblt
    1GDI-bitblt方法BitBlt用于从原设备中复制位图到目标设备,弊端,做投屏抓屏时候可能会比较慢,帧率比较低头文件:(代码来源于网络,目前无法溯源)#pragmaonce#include<wind......
  • s-sgdisk源码分析 “--set-alignment=value分区对齐参数”
    文章目录​​边界对齐子命令使用​​​​源码分析​​​​sgdisk.ccmain函数入口​​​​gptcl.ccDoOptions解析并执行具体命令函数​​​​gpt.ccCreatePartition创建分......
  • 关于Picturebox中无法清除GDI+绘图问题
    在PictureBox上实时显示图像,并绘制直线而搜索框不能变化的功能1.思路由于winform的Picturebox控件,并不支持一边重绘GDI一边保持搜索框。遂选择把2个Picturebox控件叠放......