【问题标题】:Invert .ico file in Python在 Python 中反转 .ico 文件
【发布时间】:2021-09-21 05:40:07
【问题描述】:

我正在尝试根据 windows 主题反转 .ico 文件的图标。 根据窗口的不同,我将尝试反转托盘图标。 我还没有找到任何方法来实现这一点。

如何使用 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

我使用此代码获取图标

【问题讨论】:

  • 你不能忍受两个预存的图标吗?
  • 是的,如果这不起作用,我将继续采用这种方法

标签: python image negation


【解决方案1】:

您可以使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2014-12-30
    • 2013-09-02
    • 2021-01-04
    • 2019-03-23
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多