确定复制到剪贴板的文件是否是图像

2023-11-25

用户右键单击文件(例如在桌面上)并单击“复制”。现在如何在 C# 中确定复制到剪贴板的文件是否是图像类型?

Clipboard.ContainsImage() 在这种情况下不起作用

下面判断是否将图像直接复制到剪贴板,而不是文件是否复制到剪贴板

   IDataObject d = Clipboard.GetDataObject();

   if(d.GetDataPresent(DataFormats.Bitmap))
   {
       MessageBox.Show("image file found");
   }

为了清楚起见,我想确定复制到剪贴板的“文件”是否是图像。

编辑:答案很好,但是如何获取复制到剪贴板的文件的文件名? Clipboard.getText() 似乎不起作用.. Edit2: Clipboard.GetFileDropList() 有效


你可以这样检查(没有内置的方法可以做到这一点) 读取文件并在图形图像对象中使用它,如果它是图像,它将正常工作,否则它将引发OutOfMemoryException.

这是示例代码:

 bool IsAnImage(string filename)
  {
   try
    {
        Image newImage = Image.FromFile(filename);
    }
    catch (OutOfMemoryException ex)
    {
        // Image.FromFile will throw this if file is invalid.
       return false;
    }
    return true;
  }

它适用于 BMP、GIF、JPEG、PNG、TIFF 文件格式


Update

这是获取文件名的代码:

IDataObject d = Clipboard.GetDataObject();
if(d.GetDataPresent(DataFormats.FileDrop))
{
    //This line gets all the file paths that were selected in explorer
    string[] files = d.GetData(DataFormats.FileDrop);
    //Get the name of the file. This line only gets the first file name if many file were selected in explorer
    string TheImageFile = files[0];
    //Use above method to check if file is Image file
    if(IsAnImage(TheImageFile))
    {
         //Process file if is an image
    }
    {
         //Process file if not an image
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定复制到剪贴板的文件是否是图像 的相关文章

随机推荐

  • 供应商标识符和 iOS6

    The identifierForVendor需要 iOS 6 如果我的应用程序当前支持 iOS 4 因此我无法使用它 因为我的更新应该始终满足我的应用程序之前的最低要求 要求 你可以使用这个 NSString udid if SYSTEM
  • Android:无法构建 APK。发现多个文件具有独立于操作系统的路径“META-INF/android.arch.lifecycle_runtime.version”

    突然间 我在构建 APK 时遇到此错误 Error Execution failed for task app transformResourcesWithMergeJavaResForDevDebug gt More than one f
  • std::array 的嵌套聚合初始化[重复]

    这个问题在这里已经有答案了 我想知道 为什么要声明std arr下面的代码会产生错误 而c arr编译良好 struct S int a b S c arr 1 2 3 4 OK std array
  • 在哪里可以设置 crontab 将使用的环境变量?

    我每小时运行一个 crontab 运行它的用户在以下位置具有环境变量 bash profile当用户从终端运行作业时 它会起作用 但是 显然这些在运行时不会被 crontab 获取 我尝试过将它们设置为 profile and bashrc
  • pandas:如何根据所有列的总和选择行?

    如何根据 pandas 中的列总和选择行 假设我想选择列总和大于 0 的所有行 Use sum并设置axis 1 param In 59 df pd DataFrame a randn 10 b randn 10 c randn 10 df
  • FB.XFBML.parse() 对单个元素不执行任何操作

    我有一个大页面 底部有一个 加载更多 按钮 每次点击 加载更多 都会通过 AJAX 加载更多内容 该内容的一部分是类似 Facebook 的按钮 div class fb like div 加载附加内容后 我可以要求 Facebook 重新
  • 避免碰撞检测的 O(n^2) 复杂度

    我正在开发一个简单的基于图块的 2D 游戏 我有一个关卡 其中填充了可以与图块以及彼此交互的对象 检查与图块地图的碰撞相当容易 并且可以对具有线性复杂度的所有对象完成 但现在我必须检测对象之间的碰撞 现在我必须对照每个其他对象检查每个对象
  • android 模拟器从 emulator-5554 重命名为唯一字符串

    所以当启动模拟器时 adb devices 给我 emulator 5554 设备 一切花花公子直到这里 我的设想是创建一个模拟器农场 在多个设备上生成多个模拟器 为了唯一区分机器 A 上运行的 emulator 5554 和机器 B 上运
  • 检查奇数/偶数并更改数字大小的输出

    我有几个问题需要解决作业 并且有点卡住了 问题是编写一个程序 让用户输入一个奇数 检查它是奇数 然后根据输入的大小打印一个颠倒的星星金字塔 例如 如果您输入 5 则会出现 因此 我的问题有两个方面 1 如何检查它是偶数还是奇数 我试过if
  • Spring Boot Gradle Tomcat 8

    Spring Boot 参考指南提供了通过在 Maven 中设置自定义属性来升级到 Tomcat 8 的说明
  • 如果至少一个源不可用,则无法安装任何 NuGet 包

    以下问题在VS2013 Premium 中不存在 我只能在VS2015 Enterprise 中重现 我添加了自定义 NuGet 包源 如果该源不可用我无法安装any包 例如 EntityFramework 我收到一条消息 尝试收集包的依赖
  • PyTorch安装失败找不到满足要求的版本

    我正在尝试安装PyTorch在 Windows 10 专业版 64 位操作系统 PC 机上使用 PyCharm Community Edition 2020 2 3 x64 和 Python 3 9 0 我试过了 pip install t
  • 在Go中模拟tcp连接

    在 Go 中 TCP 连接 net Conn 是 io ReadWriteCloser 我想通过模拟 TCP 连接来测试我的网络代码 我有两个要求 要读取的数据存储在字符串中 每当写入数据时 我希望将其存储在某种稍后可以访问的缓冲区中 是否
  • Visual Studio Designer 可以显示继承泛型类型的类吗?

    我正在尝试清除解决方案中的所有设计器错误 但遇到了以下错误 无法显示此文件的设计器 因为无法设计其中的任何类 设计者检查了文件中的以下类 DoubleAttributeTextBoxBase 无法加载基类 NumericAttributeT
  • 如何显示 ANTLR 树 GUI

    如果您有这样的代码 无论是控制台还是 Swing 如何显示 AST GUI 我的 ANTLR 是版本 3 CharStream stream new ANTLRStringStream program XLSample1 n constan
  • 升级到 Mac OS 10.15 (Catalina) 后 MongoDB 找不到数据目录

    我今天更新到了 MacOS 10 15 Catalina 当我跑步时mongod在终端中找不到 data db目录 Users william gt mongod 2019 10 08T17 02 44 183 0800 I CONTROL
  • 为什么嵌入框阴影不适用于图像?

    我有一个使用插入框阴影的容器 容器包含图像和文本 嵌入阴影显然不适用于图像 这里的白色部分是容器 它包含一个白色图像 并且应用了嵌入框阴影 body background color 000000 main position absolut
  • Lua - 打包 IEEE754 单精度浮点数

    我想用纯Lua创建一个函数来生成一个fraction 23位 一个exponent 8位 和一个sign 1 位 来自一个数字 因此该数字约等于math ldexp fraction exponent 127 sign 1 and 1 or
  • 如何从命令行创建一个空的变更列表

    我正在尝试使用以下命令从命令行创建一个空的更改列表p4 change i但似乎这个命令什么也没做 我没有收到任何错误 成功消息 命令行只是不返回任何内容 我必须用 ctrl c 杀死它 我的 p4 客户端可以工作 我能够看到我的所有信息并正
  • 确定复制到剪贴板的文件是否是图像

    用户右键单击文件 例如在桌面上 并单击 复制 现在如何在 C 中确定复制到剪贴板的文件是否是图像类型 Clipboard ContainsImage 在这种情况下不起作用 下面判断是否将图像直接复制到剪贴板 而不是文件是否复制到剪贴板 ID