问题描述
- python截屏问题 win32和PIL
- 服务器部署截屏程序,本地远程登录服务器的时候能正常截屏,如果把远程界面关闭或者最小化的时候,截屏就会失败
使用PIL的情况:coordinate = (0 0 6020) pic = ImageGrab.grab(coordinate)
错误信息:
File ""E:python-workspacecrawler-20150529spidersgz_spider.py"" line 141 in _do_crawl_img_by_screenshot pic = ImageGrab.grab(coordinate) # 截图 File ""D:Python27libsite-packagesPILImageGrab.py"" line 34 in grab size data = grabber()IOError: screen grab failed
使用win32截屏也是用户界面打开的时候能成功,把远程界面退出或者最小化的时候截屏失败,代码如下:
GrabUtil.py def grab(dpathargs): ''''' 参数为指定保存的目录 返回图片文件名文件名格式:日期.jpg 如:2009328224853.jpg ''' hwnd = 0 hwndDC = win32gui.GetWindowDC(hwnd) mfcDC=win32ui.CreateDCFromHandle(hwndDC) saveDC=mfcDC.CreateCompatibleDC() saveBitMap = win32ui.CreateBitmap() MoniterDev=win32api.EnumDisplayMonitors(NoneNone) #w = MoniterDev[0][2][2] #h = MoniterDev[0][2][3] w = args[2] h = args[3] #print wh #图片大小 saveBitMap.CreateCompatibleBitmap(mfcDC wh) saveDC.SelectObject(saveBitMap) saveDC.BitBlt((00)(w h) mfcDC (args[0]args[1]) win32con.SRCCOPY) cc=time.gmtime() bmpname=str(cc[0])+str(cc[1])+str(cc[2])+str(cc[3]+8)+str(cc[4])+str(cc[5])+'.bmp' saveBitMap.SaveBitmapFile(saveDC bmpname) pic = Image.open(bmpname) pic.save(os.path.join(dpath 'xxxxx.jpeg') 'jpeg') os.remove(bmpname) return pic
报错信息:
File ""E:python-workspacecrawler-20150529spiderssele.py"" line 162 in _do_crawl_img img = self._do_crawl_img_by_screenshot() File ""E:python-workspacecrawler-20150529spiderssz_spider.py"" line 149 in _do_crawl_img_by_screenshot pic = grab(self.storage_pathcoordinate) File ""E:python-workspacecrawler-20150529GrabUtil.py"" line 24 in grab saveDC.BitBlt((00)(w h) mfcDC (args[0]args[1]) win32con.SRCCOPY)error: BitBlt failed
初步判定原因:win7 服务器用户登录的时候截屏没有问题,本地远程登陆这台服务器的时候也没有问题,远程界面最小化的时候界面可能调用的是本地服务器的本地方法截屏,所以失败,当我关闭远程界面的时候,这个时候服务器是没有用户登录的状态,所以截屏也失败了,希望那位大牛能帮忙解决问题,告知具体原因
解决方案
http://blog.csdn.net/qiguiting/article/details/39376433
时间: 2024-08-03 17:14:59