如何从EXE中提取32x32图标位图数据并将其转换为PIL Image对象?

2023-11-30

我正在尝试从 EXE 中提取 32x32 图标,并将位图数据转换为 PILImage目的。我的最终目标是将图标与另一个 32x32 PNG 进行比较,并通过 RMS 获得差异。

我试过做win32gui.ExtractIconEx() then win32gui.GetIconInfo()并试图Image.open()对此,但 PIL 显然不接受 PyHANDLE 对象。我也尝试过直接打开exeImage.open(),显然这是行不通的。

我现在很困惑,有没有什么办法可以在Python中实现这一点,或者我应该用不同的语言编写这部分代码?


来自邮件列表here,我找到了这个代码片段:

import win32ui
import win32gui
import win32con
import win32api

ico_x = win32api.GetSystemMetrics(win32con.SM_CXICON)
ico_y = win32api.GetSystemMetrics(win32con.SM_CYICON)

large, small = win32gui.ExtractIconEx("C:\Program Files (x86)\Malwarebytes' Anti-Malware\mbam.exe",0)
win32gui.DestroyIcon(small[0])

hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) )
hbmp = win32ui.CreateBitmap()
hbmp.CreateCompatibleBitmap( hdc, ico_x, ico_x )
hdc = hdc.CreateCompatibleDC()

hdc.SelectObject( hbmp )
hdc.DrawIcon( (0,0), large[0] )

hbmp.SaveBitmapFile( hdc, 'icon.bmp')  

从那里,您可以将其加载到PIL在正常情况下Image.open时尚。

如果您仔细研究文档,您应该能够避免 IO 步骤并在内存中完成所有操作(如果您愿意)。PIL有一个来自frombuffer您可以用来转换结果的方法GetBitmapBits to an Image目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从EXE中提取32x32图标位图数据并将其转换为PIL Image对象? 的相关文章

随机推荐

  • 为什么git分支不显示任何内容?

    我正在使用 github 开发一个存储库 当我执行时git branch 我的屏幕上没有显示任何内容 见下图 git分支 当我执行时git status 据说我在分行 git 状态 所以有一些分支机构 我正在与他们合作 你知道如何解决这个问
  • 如何使用Json解析?

    以下是我的 Json 文件 Restaurants 8 Res name Purple Cafe and Wine Bar foodtype American Wine city Seattle state WA latitude 0 lo
  • 使用 awk 的最近邻

    这就是我尝试使用 AWK 语言做的事情 我主要在步骤 2 上遇到问题 我已经显示了一个示例数据集 但原始数据集由 100 个字段和 2000 条记录组成 算法 1 初始化精度 0 2 对于每条记录r Find the closest oth
  • 如何检测蓝牙设备是否已连接

    在 android 中 我的 Activity 如何知道蓝牙 A2DP 设备是否已连接到我的设备 有广播接收器吗 这个广播接收器怎么写 从 API 11 Android 3 0 开始 您可以使用蓝牙适配器发现连接到特定蓝牙配置文件的设备 我
  • 在引擎中使用观察者

    我创建了一个基本上用于我们所有项目的引擎 现在我想做的是添加一个before create回调该引擎中的所有模型 经过一番搜索后 我发现观察者是最佳选择 所以 我创建了这个观察者 app models baco auth auth obse
  • Angular 7 - build --prod 失败并出现错误:无法解析所有参数

    我使用 Angular 7 2 10 当我尝试使用命令构建生产项目时 ng b prod 我收到错误 ERROR in Can t resolve all parameters for ApiService in 我有一个带有 3 个参数的
  • WebView 即使应用程序处于后台/关闭时也如何运行(前台服务处于活动状态)

    我正在构建一个应用程序 它将从网站上抓取一些数据 并在满足某些条件时显示通知 当应用程序打开时 因为正在渲染 WebView 一切都运行良好 没有问题 但是当我关闭应用程序时 WebView 被禁用 因此我无法再使用它来抓取数据 抓取代码位
  • 为什么复制构造函数参数是 const?

    Vector const Vector other Copy constructor x other x y other y 为什么参数是常量 您得到的答案提到确保 ctor 无法更改正在复制的内容 他们是对的 将 const 放在那里确实
  • 使用 C# 进行远程 HTTP Post [重复]

    这个问题在这里已经有答案了 如何在 C 中执行远程 HTTP Post 请求 这是我曾经编写的一个小应用程序的代码 用于将包含值的表单发布到 URL 它应该非常坚固 formValues 是一个 Dictionary 包含要发布的变量及其值
  • 在 Android 上禁用屏幕旋转 [重复]

    这个问题在这里已经有答案了 当我按下按钮时 我想禁用屏幕旋转关于我的所有活动 我怎样才能做到这一点 顺便说一句 当用户单击按钮时 手机可以处于横向或纵向位置 setRequestedOrientation ActivityInfo SCRE
  • 关于hadoop hdfs文件系统重命名

    我正在将大量数据存储到 hdfs 中 我需要将文件从一个文件夹移动到另一个文件夹 请问文件系统的rename方法的成本一般是多少 假设我必须移动 TB 级的数据 非常感谢 重命名是 HDFS 中的仅元数据操作 因此 它也像普通 POSIX
  • 是什么导致我的图像在使用 FTP 通过蓝牙 RFCOMM 传输期间损坏?

    我正在开发两个独立的应用程序 用于使用 Obex 文件传输协议通过蓝牙 RFCOMM 进行数据传输 一方面 在 PC 上运行的 Windows C 控制台应用程序侦听传入的蓝牙连接 并在客户端发出请求时发送图像 另一方面 移动设备上运行的
  • 切换隐私设置将终止该应用程序

    我有一个使用 iPhone 联系人的应用程序 在 iOS 6 中 用户第一次尝试时会收到联系人访问权限提示 此时 用户可以点击 允许 或 不允许 问题是当用户将应用程序置于后台 然后导航到 设置 gt 隐私 gt 联系人 以切换我的应用程序
  • 在 zsh 中哪里放置 $PATH 变量断言?

    I love zsh 但我不知道该把我的 PATH和其他变量断言 我发现它们分散在文件之间 zshrc zprofile bashrc bash profile 有时甚至翻倍 我意识到里面有任何东西bash文件没有多大意义 因为我正在使用z
  • 在 Cygwin 中编译 Haskell 代码,以及 Windows 上 Haskell 平台中的一些其他错误

    我正在尝试使用 Haskell Platform 2011 2 0 1 在 Haskell 中编译一个简单的 hello world 程序 如果我在 WinGHCi 中加载代码并使用 GUI 进行编译 则会创建 exe 然后我可以从 Cyg
  • C# SmtpClient 类无法使用 gmail 发送电子邮件

    我在使用 Gmail 帐户发送电子邮件时遇到问题 我正在拔头发 相同的设置在 Thunderbird 中运行良好 这是代码 我也尝试过 465 端口 但没有成功 SmtpClient ss new SmtpClient smtp gmail
  • mysql 数据库中的古吉拉特语字体无法正确显示

    我们正在使用此代码 但古吉拉特语字体无法在浏览器上正确显示 我的sql about字段有这样的文本
  • Flutter:断言失败:布尔表达式不能为空

    在 flutter 中 我使用 future 调用 Firestore 云数据库中的值 并尝试将该值分配给变量 这是我的代码 import package cloud firestore cloud firestore dart impor
  • 如何使用 jpeg 帧制作 .avi、.mp4 文件?

    我正在使用 IP 摄像机 并且我从摄像机获取了 Jpeg 帧和音频数据 PCM 现在 我想根据上述数据创建 avi 或 mp4 格式的视频文件 音频和视频 我搜索了一下 我知道 ffmpeg 库可以做到这一点 但我不知道如何使用 ffmpe
  • 如何从EXE中提取32x32图标位图数据并将其转换为PIL Image对象?

    我正在尝试从 EXE 中提取 32x32 图标 并将位图数据转换为 PILImage目的 我的最终目标是将图标与另一个 32x32 PNG 进行比较 并通过 RMS 获得差异 我试过做win32gui ExtractIconEx then