python图标icon_用Python提取exe图标icon
這里使用Python win32包中的win32gui.ExtractIconEx方法來提取exe的圖標(biāo),除了安裝Python,還需要到這里下載Pywin。
第一份代碼
將指定的a.exe圖標(biāo)保存為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的兩張圖標(biāo)的句柄。后面就根據(jù)這個句柄畫圖保存,這樣出來的圖片首先不是圖標(biāo)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_()
提取圖標(biāo)和上一份代碼是一樣的,在得到Bitmap后通過QtGui里的fromWinHBITMAP方法將bitmap轉(zhuǎn)換成透明背景的QPixmap,然后就可以保存為ico格式的圖標(biāo)了。paintEvent方法重寫了QMainWindow的方法,畫圖用而已。
總結(jié)
以上是生活随笔為你收集整理的python图标icon_用Python提取exe图标icon的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程写mysql数据库_多线程读写my
- 下一篇: python读取word图片_Pytho