在 Python 中反转 .ico 文件

Invert .ico file in Python

我正在尝试根据 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