python - 在 Python 中反转 .ico 文件
问题描述
我正在尝试根据 windows 主题反转 .ico 文件的图标。根据 Windows 的不同,我将尝试反转托盘图标。我还没有找到任何方法来实现这一点。
如何使用 python 2.7 反转图标?
def get_hicon(self, icon):
hicon = None
hinst = win32gui.GetModuleHandle(None)
if icon and os.path.isfile(icon):
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
ico_x = win32api.GetSystemMetrics(win32con.SM_CXSMICON)
ico_y = win32api.GetSystemMetrics(win32con.SM_CYSMICON)
hicon = win32gui.LoadImage(hinst,
icon,
win32con.IMAGE_ICON,
ico_x,
ico_y,
icon_flags)
return hicon
我使用此代码获取图标
解决方案
您可以使用 Pillow,反转图像并将其保存到临时文件中,该文件将在上下文管理器(带块)退出后自动删除
# pip install pillow
from PIL import Image, ImageOps
from tempfile import NamedTemporaryFile
with NamedTemporaryFile() as file, Image.open("image.ico") as img:
old_mode = img.mode # loaded as RGBA!
rgb = img.convert("RGB")
inverted = ImageOps.invert(rgb)
inverted = inverted.convert(old_mode)
inverted.save(file, format="ICO", quality=100)
file.seek(0) # rewind so it can be read again
print(file.name)
# /tmp/tmpjo7pa_r6
# load/read icon here, probably self.get_hicon(file.name)
# file is automatically deleted here
推荐阅读
- java - 如何在 jar 的构建过程中从 'src/main/java' 中排除类?
- css - Material ui 将元素置于移动设备、台式机、平板电脑的底部响应式
- r - 具有多个输入的 R Shiny ObserveEvent
- kubernetes - 查找以前 pod 的日志
- sql - PostgreSQL — 选择 column1 where MIN(column2)
- windows - 有没有办法识别 Telegram 在前台或后台运行的状态?
- bash - mysqldump - 将 greped STDERR 重定向到文件
- android - 如何以编程方式更改导航的根片段
- store - 使用 Vue 3 和 Typescript 更好地理解类型
- schema.org - 我应该如何在 Schema.org 中表示“全球”事件/纪念活动/场合?