日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python图标icon_用Python提取exe图标icon

發布時間:2023/12/2 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python图标icon_用Python提取exe图标icon 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里使用Python win32包中的win32gui.ExtractIconEx方法來提取exe的圖標,除了安裝Python,還需要到這里下載Pywin。

第一份代碼

將指定的a.exe圖標保存為bmp格式:

import win32ui

import win32gui

large, small = win32gui.ExtractIconEx(r"c:/a.exe",0)

win32gui.DestroyIcon(small[0])

hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) )

hbmp = win32ui.CreateBitmap()

hbmp.CreateCompatibleBitmap( hdc, 32, 32 )

hdc = hdc.CreateCompatibleDC()

hdc.SelectObject( hbmp )

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

hbmp.SaveBitmapFile( hdc, "save.bmp" )

ExtractIconEx方法返回大32*32,小16*16的兩張圖標的句柄。后面就根據這個句柄畫圖保存,這樣出來的圖片首先不是圖標ico格式,其次背景是黑色的很難看。

第二份代碼

用PyQt對圖像做了處理,使之背景透明,并保持為ico格式。要使用PyQt,請到這里下載PyQt。代碼如下:

import sys

import win32ui

import win32gui

from PyQt4 import QtCore

from PyQt4 import QtGui

class testWindow(QtGui.QMainWindow):

def __init__(self):

super(testWindow, self).__init__()

self.setGeometry(180.0, 130.0, 280.0, 400.0)

self.setMouseTracking(True)

large, small = win32gui.ExtractIconEx(r"C:/a.exe", 0)

win32gui.DestroyIcon(small[0])

self.pixmap = QtGui.QPixmap.fromWinHBITMAP(self.bitmapFromHIcon(large[0]), 2)

self.pixmap.save("a.ico","ico")

def bitmapFromHIcon(self, hIcon):

hdc = win32ui.CreateDCFromHandle(win32gui.GetDC(0))

hbmp = win32ui.CreateBitmap()

hbmp.CreateCompatibleBitmap(hdc, 32, 32)

hdc = hdc.CreateCompatibleDC()

hdc.SelectObject(hbmp)

hdc.DrawIcon((0, 0), hIcon)

hdc.DeleteDC()

return hbmp.GetHandle()

def paintEvent(self, event):

painter = QtGui.QPainter()

painter.begin(self)

painter.setRenderHint(QtGui.QPainter.Antialiasing)

painter.setPen(QtCore.Qt.NoPen)

painter.setBrush(QtGui.QBrush(QtGui.QColor(255.0, 255.0, 255.0, 255.0), QtCore.Qt.SolidPattern))

painter.drawRect(QtCore.QRect(0.0, 0.0, 280.0, 400.0))

painter.drawPixmap(QtCore.QRect(0.0, 0.0, 32.0, 32.0), self.pixmap)

painter.end()

if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)

mainWindow = testWindow()

mainWindow.show()

app.exec_()

提取圖標和上一份代碼是一樣的,在得到Bitmap后通過QtGui里的fromWinHBITMAP方法將bitmap轉換成透明背景的QPixmap,然后就可以保存為ico格式的圖標了。paintEvent方法重寫了QMainWindow的方法,畫圖用而已。

總結

以上是生活随笔為你收集整理的python图标icon_用Python提取exe图标icon的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。