반응형
wxpython -- 화면캡쳐후 저장하기
환경 : windows 7 64bit, wxpython 3.0.1.1, python 2.7.9 64bit
참고 : http://wiki.wxpython.org/WorkingWithImages
*** dc.GetAsBitmap() 는 사용못함 !!!! (Robin 아직 구현안함???)
작업순서:
1. ScreenDC 로 화면 저장.
2. MemoryDC 만들기. --- bitmap 을 가지고 작업하는 DC
3. 저장한 ScreenDC 크기의 빈 bitmap 만들기. -- wx.EmptyBitmap
4. MemoryDC에서 bitmap 선택하여, 작업가능하게 한다.(작업시작.)
5. MemoryDC 에 그리기..또는 ScreenDC 복사하기.. --- 결과는 bitmap 에 그려진다...
6. 작업종료후, MemoryDC에서 bitmap 선택해제함. -- MemoryDC.SelectObject(wx.NullBitmap)
7. 선택해제된 bitmap 을 파일로 저장함...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import wx | |
import time | |
class Example(wx.Frame): | |
def __init__(self, parent, title): | |
super(Example, self).__init__(parent, title=title, size=(250, 150)) | |
self.bmp = None | |
self.timeOn = True # 캡쳐사진에 시간표시. | |
pan = wx.Panel(self) | |
vbox = wx.BoxSizer(wx.VERTICAL) | |
btn1 = wx.Button(pan,label = u'캡쳐',size=(100,30)) | |
vbox.Add(btn1) | |
btn2 = wx.Button(pan,label = 'save') | |
vbox.Add(btn2) | |
pan.SetSizer(vbox) | |
btn1.Bind(wx.EVT_BUTTON, self.onbtn1) | |
btn2.Bind(wx.EVT_BUTTON, self.onbtn2) | |
self.Centre() | |
self.Show() | |
def onbtn1(self,event): | |
# print time.ctime() # 현재시간 | |
dc = wx.ScreenDC() | |
# dc= wx.ClientDC(self) | |
mem = wx.MemoryDC() | |
dx,dy = dc.GetSize() | |
# self.bmp = dc.GetAsBitmap() # 사용못함.. | |
if dc.IsOk(): | |
bmp2 = wx.EmptyBitmap(dx,dy,-1) # 화면크기의 빈 bitmap 만들기. | |
mem.SelectObject(bmp2) # bitmap 을 MemoryDC 에서 사용하기 위해 선택 | |
mem.Blit(0,0,dx,dy,dc,0,0) # ScreenDC 에 있는 것을 MemoryDC 로 복사. | |
if self.timeOn: | |
# mem.SetTextBackground('blue') # 효과없음.??? | |
mem.SetTextForeground('red') | |
txt = time.ctime() # 현재시간 | |
mem.DrawText(txt, 50, 50) # MemoryDC 통해서 bitmap에 현재시간 그리기.. | |
mem.SelectObject(wx.NullBitmap) # MemoryDC에서 bitmap 사용해제. | |
self.bmp = bmp2 # 해제된 bitmap을 저장하기위해.. 사용가능!!! | |
def onbtn2(self,event): | |
self.bmp.SaveFile('tmpcap2.bmp',wx.BITMAP_TYPE_BMP) # bitmap 파일로 저장하기. | |
if __name__ == '__main__': | |
app = wx.App() | |
Example(None, 'Capture Prog') | |
app.MainLoop() |
반응형
'wxpython' 카테고리의 다른 글
wx.ComboBox -- item 추가하기 (0) | 2015.05.19 |
---|