def test_start_record(self): def video_cb(err, code): self.failIf(err, "Error while recording") if self.counter: self.failUnlessEqual(code, camera.EPrepareComplete, "State is not proper") else: self.failUnlessEqual(code, camera.EOpenComplete, "State is not proper") self.counter += 1 def finder_cb(im): appuifw.app.body.blit(im) self.counter = 0 video_filename = 'test_video.3gp' appuifw.app.body = appuifw.Canvas() self.delete_files_if_exist([video_filename], save_path) try: camera.start_finder(finder_cb) camera.start_record(save_path + video_filename, video_cb) e32.ao_sleep(5) camera.stop_record() camera.stop_finder() except RuntimeError, e: print >> sys.stderr, "Error recording a video :", e raise
def initImager(self): def cameraBuffer(image): appuifw.app.body.blit(image) appuifw.app.body = appuifw.Canvas() camera.start_finder(cameraBuffer)
def start_viewfinder(): if flickr_token: camera.start_finder(finder_cb) canvas.bind(key_codes.EKeySelect, take_photo) else: appuifw.note(u"Give a Flickr token first", "error")
def videocamera(): global keyboard i=len(os.listdir("E:\\Videos\\")) video_savepath=u"E:\\Videos\\vid%d.mp4" % i canvas=appuifw.Canvas(event_callback=keyboard.handle_event, redraw_callback=None) appuifw.app.body=canvas camera.stop_finder() camera.start_finder(vf, size=(240,196)) recording=False running=True while running: if keyboard.pressed(EScancodeSelect): if not recording: vid=camera.start_record(video_savepath, video_callback) #Start recording the video recording=True else: camera.stop_record() #Stop recording videocamera() #Restart the camera in video mode if keyboard.pressed(EScancodeRightSoftkey) and recording: camera.stop_record() quit() appuifw.app.menu=[(u"Exit", quit)] e32.ao_yield()
def videocamera(): global keyboard i = len(os.listdir("E:\\Videos\\")) video_savepath = u"E:\\Videos\\vid%d.mp4" % i canvas = appuifw.Canvas(event_callback=keyboard.handle_event, redraw_callback=None) appuifw.app.body = canvas camera.stop_finder() camera.start_finder(vf, size=(240, 196)) recording = False running = True while running: if keyboard.pressed(EScancodeSelect): if not recording: vid = camera.start_record( video_savepath, video_callback) #Start recording the video recording = True else: camera.stop_record() #Stop recording videocamera() #Restart the camera in video mode if keyboard.pressed(EScancodeRightSoftkey) and recording: camera.stop_record() quit() appuifw.app.menu = [(u"Exit", quit)] e32.ao_yield()
def take_picture(): global pos global state state = "take_picture" if not pos: appuifw.query(u"You must get your position before taking a picture", "query") else: camera.start_finder(viewfinder)
def start(): global sviewsz if sviewsz == None: sviewsz = selviewsz() camera.start_finder(vfCallback, size=sviewsz) appuifw.app.menu = mainmenu_live
def set_zoom_0(): global zoom, z1, z2, z3 zoom=0 z1="X 0" z2=str(camera.max_zoom()/4) z3=str(camera.max_zoom()/2) pic=camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240,180))
def set_zoom_half_max(): global zoom, z1, z2, z3 zoom = camera.max_zoom() / 2 z1 = "0" z2 = str(camera.max_zoom() / 4) z3 = "X " + str(camera.max_zoom() / 2) pic = camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240, 180))
def initImager(self): if(self.captureImage == 1): textScreen = appuifw.Text() textScreen.font = 'normal' msgText = u'You are currently capturing images.' msgText += u'The view finder cannot be shown until you stop capturing' msgText += u' and go back to the image screen.' textScreen.add(msgText) appuifw.app.body = textScreen else: self.imagerOn = 1 def cameraBuffer(image): appuifw.app.body.blit(image) appuifw.app.body = appuifw.Canvas() camera.start_finder(cameraBuffer)
def run(self): Dialog.refresh(self) try: camera.start_finder(self.redraw) except: note(LABELS.loc.pt_err_cant_start_viewf,"error") return None while (not self.taken) and (not self.cancel): e32.ao_yield() try: camera.stop_finder() camera.release() except: note(LABELS.loc.pt_err_cant_stop_viewf,"error") return self.filename
def run(self): # setup screen appuifw.app.screen = 'large' appuifw.app.title = u'Magic Video' appuifw.app.exit_key_handler = self.stop appuifw.app.body = appuifw.Canvas(event_callback=self.event) appuifw.app.menu = [(u"Effortless (2x2)", lambda: self.new_game(4)), (u"Easy (3x3)", lambda: self.new_game(9)), (u"Medium (4x4)", lambda: self.new_game(16)), (u"Hard (5x5)", lambda: self.new_game(25)), (u"Impossible (6x6)", lambda: self.new_game(36)), (u"Help", self.help), (u"About Magic Video", self.about)] self.prerender_text() camera.start_finder(self.draw) # start camera self.lock = e32.Ao_lock() self.lock.wait() camera.stop_finder() camera.release()
def add_entry(): global fname, text, photo text = photo = None native = appuifw.query(u"Native word:", "text") if not native: return foreign = appuifw.query(u"Foreign word:", "text") if not foreign: return fname = PATH + native trans.append((native, foreign)) line = "%s:%s" % (native, foreign) print >> dict_file, line.encode("utf-8") if appuifw.query(u"Record sound", "query"): record_sound() if appuifw.query(u"Take photo", "query"): camera.start_finder(viewfinder) canvas.bind(key_codes.EKeySelect, take_photo) else: appuifw.note(u"Entry added!", "info")
def redraw(r=(), img=None): if img: appuifw.app.body.blit(img) def cb(img, bpp=1): img.save('D:\\pixels.jpg', bpp=24, quality=20) f = open('D:\\pixels.jpg', "rb") bt_send_something(f.read()) f.close() redraw(img=img) def bt_send_something(something): if something: sock.send(something) def exit(): camera.stop_finder() app_lock.signal() appuifw.app.title = u"video to pc" appuifw.app.exit_key_handler = exit bt_connect() appuifw.app.body = appuifw.Canvas(redraw) camera.start_finder(cb) app_lock = e32.Ao_lock() app_lock.wait()
def start(): camera.start_finder(vfCallback, backlight_on=1, size=(160, 120)) appuifw.app.menu = [(u'Stop', stop), (u'Exit', __exit__)]
def start(): camera.start_finder(vfCallback) appuifw.app.menu = [(u'Capture', capture), (u'Stop', stop), (u'Exit', __exit__)]
def photocamera(): global keyboard, z1, z2, z3, zoom, r1, r2, resolution, q, q1, q2 #We set the tabs of the application def handle_tabs(index): global lb, videocamera if index == 0: photocamera() if index == 1: videocamera() appuifw.app.set_tabs([u"Photo", u"Video"], handle_tabs) #In order to be able to take several pictures and videos, we add a number to the end of their filenames. #This number is obtained by checking how many files of that type are saved on the device i = len(os.listdir("E:\\Images\\")) photo_savepath = u"E:\\Images\\pic%d.jpg" % i #Make the background a canvas; needed for key capturing canvas = appuifw.Canvas(event_callback=keyboard.handle_event, redraw_callback=None) appuifw.app.body = canvas #The default resolution is 0.8 megapixels and the default zoom level is 0 resolution = (1024, 768) r1 = "X 1024x768" r2 = "640x480" zoom = 0 z1 = "X 0" z2 = str(camera.max_zoom() / 4) z3 = str(camera.max_zoom() / 2) #These functions set the resolution, zoom and image quality to the selected value def set_res_vga(): global resolution, r1, r2 resolution = (640, 480) r1 = "1024x768" r2 = "X 640x480" def set_res_08(): global resolution, r1, r2 resolution = (1024, 768) r1 = "X 1024x768" r2 = "640x480" def set_zoom_0(): global zoom, z1, z2, z3 zoom = 0 z1 = "X 0" z2 = str(camera.max_zoom() / 4) z3 = str(camera.max_zoom() / 2) pic = camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240, 180)) def set_zoom_quarter_max(): global zoom, z1, z2, z3 zoom = camera.max_zoom() / 4 z1 = "0" z2 = "X " + str(camera.max_zoom() / 4) z3 = str(camera.max_zoom() / 2) pic = camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240, 180)) def set_zoom_half_max(): global zoom, z1, z2, z3 zoom = camera.max_zoom() / 2 z1 = "0" z2 = str(camera.max_zoom() / 4) z3 = "X " + str(camera.max_zoom() / 2) pic = camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240, 180)) def set_qual_50(): global q, q1, q2 q = 50 q1 = "High" q2 = "X Low" def set_qual_100(): global q, q1, q2 q = 100 q1 = "X High" q2 = "Low" #In order for the viewfinder to correspond to the zoom level, we must take a picture (without saving it), close and open the viewfinder #These steps are necessary because of the way the functions are currently defined in PyS60, and have a slight impact on performance #Future releases of PyS60 may have optimized functions pic = camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240, 180)) #We now create a loop that "waits" for keys to be pressed running = True while running: if keyboard.pressed(EScancodeSelect): pic = camera.take_photo('RGB', resolution, zoom) #Take the picture pic.save(photo_savepath, quality=q) #Save it photocamera() #Restart camera in photo mode if keyboard.pressed(EScancodeRightSoftkey): quit() appuifw.app.menu = [(u"Zoom", ((u"%s" % z1, set_zoom_0), (u"%s" % z2, set_zoom_quarter_max), (u"%s" % z3, set_zoom_half_max))), (u"Resolution", ((u"%s" % r1, set_res_08), (u"%s" % r2, set_res_vga))), (u"Quality", ((u"%s" % q1, set_qual_100), (u"%s" % q2, set_qual_50))), (u"Exit", quit)] e32.ao_yield()
appuifw.app.exit_key_handler = cb_quit appuifw.app.menu = [(u'View:', ((u'Primary camera', lambda: set_camera(0)), (u'Secondary camera', lambda: set_camera(1)))), (u'About', menu_about), (u'Exit', cb_quit)] canvas = appuifw.Canvas(redraw_callback=cb_redraw) appuifw.app.body = canvas ( vx, vy, ) = ( xx, yy, ) = canvas.size img0 = graphics.Image.new((vx, vy)) ima0 = graphics.Image.new((vx, vy)) img1 = graphics.Image.new((vy, vx)) ima1 = graphics.Image.new((vy, vx)) img = img0 ima = ima0 img.clear(RGB_BLACK) wait_note(u'Initializing,', u'please wait!') if (xx > 320): dx = 20 else: dx = 10 import camera import _camera camera.start_finder(cb_view, size=(((3 * vx) / 4), ((3 * vy) / 4))) app_lock = e32.Ao_lock() app_lock.wait()
def start_finder(self): if (not self.finder_on): camera.start_finder(self.show_img) self.finder_on = 1 else: appuifw.note(u"Viewfinder already on")
def add_pic_photocamera(): def vf(im): if not touch: canvas.blit(im) else: canvas.begin_redraw() canvas.blit(bgimage) canvas.blit(im, target = ((canvas.size[0] - im.size[0]) / 2, 22)) canvas.end_redraw() def save_picture(pict): global limg, limg_path day=str(time.localtime()[2]) mon=str(time.localtime()[1]) i=1 if int(day) < 10: day = '0' + day if int(mon) < 10: mon = u'0' + mon if os.path.exists(images_dir+day+mon+str(time.localtime()[0])+'.jpg'): while os.path.exists(images_dir+day+mon+str(time.localtime()[0])+'('+str(i)+')''.jpg'): i=i+1 else: filename=day+mon+str(time.localtime()[0])+'('+str(i)+')''.jpg' else: filename=day+mon+str(time.localtime()[0])+'.jpg' pict.save(images_dir+filename, quality=75) camquit() limg = Image.open(images_dir+filename) if canvas.size[0] == 360: limg = limg.resize((320, 240), callback = None, keepaspect = 1) #canvas.blit(limg, target = ((canvas.size[0] - limg.size[0]) / 2, 22)) handle_redraw() else: canvas.blit(bgimage) limg = limg.resize((188, 143), callback = None, keepaspect = 1) canvas.blit(limg, target = (26, 26)) limg_path=images_dir+filename def take_picture(pos = (0, 0)): # For touch events support pic = camera.take_photo(size = (640, 480)) save_picture(pic) def camquit(): camera.stop_finder() camera.release() # get main menu back appuifw.app.menu = menu_list # clean all bindings canvas.bind(key_codes.EKeySelect, None) if touch: cam = TouchCamera(canvas) camera.start_finder(cam.start_vf, size = (503, 360)) callbacks =[{'callback': cam.close, 'area': ((480, 1), (640, 71))}, {'callback': cam.save, 'area': ((480, 73), (640, 143))}, {'callback': cam.flash_mod, 'area': ((480, 145), (640, 215))}] cam.make_toolbar(callbacks) else: camera.start_finder(vf, size=(320, 240)) canvas.bind(key_codes.EKeySelect, take_picture) appuifw.app.menu = [(u'Take picture', take_picture), (u'Cancel', camquit)]
# This produces a nice viewfinder, but the usual Camera application controls are not present. import appuifw import camera import graphics import e32 myLock = e32.Ao_lock() def quit(): camera.stop_finder() camera.release() myLock.signal() # Just updates the viewfinder. We do not actually provide a way to take a photo here. def cb(im): appuifw.app.body.blit(im) appuifw.app.exit_key_handler = quit appuifw.app.body = appuifw.Canvas() camera.start_finder(cb) myLock.wait()
def start_finder(self): if (not self.finder_on): camera.start_finder(self.show_img) self.finder_on=1 else: appuifw.note(u"Viewfinder already on")
def start_finder(self): if (not self.finder_on): camera.start_finder(self.show_final_image, size=(500,375)) self.finder_on=1 else: appuifw.note(u"Viewfinder already on")
import e32, camera, appuifw, key_codes def viewfinder(img): canvas.blit(img) def shoot(): camera.stop_finder() photo = camera.take_photo(size=(640, 480)) w, h = canvas.size canvas.blit(photo, target=(0, 0, w, 0.75 * w), scale=1) photo.save('e:\\Images\\photo.jpg') def quit(): app_lock.signal() appuifw.app.body = canvas = appuifw.Canvas() appuifw.app.title = u"Camera" appuifw.app.exit_key_handler = quit camera.start_finder(viewfinder) canvas.bind(key_codes.EKeySelect, shoot) app_lock = e32.Ao_lock() app_lock.wait()
else: pass def start_video(): files=os.listdir(videodir) num = len(files) filename = videodir+'pyvideo'+unicode(num+1)+'.3gp' canvas.bind(key_codes.EKeySelect, stop_video) camera.start_record(filename,video_callback) def stop_video(): global control_light control_light = 0 camera.stop_record() canvas.bind(key_codes.EKeySelect, start_video) def quit(): camera.stop_finder() camera.release() app_lock.signal() canvas = appuifw.Canvas() appuifw.app.body = canvas camera.start_finder(finder_cb) canvas.bind(key_codes.EKeySelect, start_video) appuifw.app.title = u"Video RECORDER" appuifw.app.exit_key_handler = quit app_lock = e32.Ao_lock() app_lock.wait()
import camera, appuifw, e32 appuifw.app.body = c = appuifw.Canvas() def quit(): camera.stop_finder() camera.release() lock.signal() def see(im): c.blit(im, (0, 0), (24, 20)) camera.start_finder(see, size=(128, 132)) appuifw.app.exit_key_handler = quit lock = e32.Ao_lock() lock.wait() #c.blit(im,(0,0),(24,20))后面有两数组(tuple可能有人叫法不同)!意思是源图象的左上角坐标,Blit后的坐标!这个坐标可以是一个意思是左上角,可以是两个,就是对角了,本例中用一个!start_finder(see,size=(128,132))这句就是取景大小了,size=设定值!我设定的是128*132实际上取的是128*96,如果你设的是176*96,它还是取128*96,它会自动取小的一个数自动按比例缩放
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import e32 import appuifw import camera import key_codes def viewfinder_cb(img): appuifw.app.body.blit(img) def capture_cb(): global photo photo=camera.take_photo() camera.stop_finder() lock.signal() old_body=appuifw.app.body appuifw.app.body=appuifw.Canvas() lock=e32.Ao_lock() photo=None camera.start_finder(viewfinder_cb) appuifw.app.body.bind(key_codes.EKeySelect, capture_cb) lock.wait() appuifw.app.body=old_body filename=u'c:\\photo.jpg' photo.save(filename) print "Photo taken and saved at:",filename
def photocamera(): global keyboard, z1, z2, z3, zoom, r1, r2, resolution, q, q1, q2 #We set the tabs of the application def handle_tabs(index): global lb, videocamera if index==0:photocamera() if index==1:videocamera() appuifw.app.set_tabs([u"Photo", u"Video"], handle_tabs) #In order to be able to take several pictures and videos, we add a number to the end of their filenames. #This number is obtained by checking how many files of that type are saved on the device i=len(os.listdir("E:\\Images\\")) photo_savepath=u"E:\\Images\\pic%d.jpg" % i #Make the background a canvas; needed for key capturing canvas=appuifw.Canvas(event_callback=keyboard.handle_event, redraw_callback=None) appuifw.app.body=canvas #The default resolution is 0.8 megapixels and the default zoom level is 0 resolution=(1024, 768) r1="X 1024x768" r2="640x480" zoom=0 z1="X 0" z2=str(camera.max_zoom()/4) z3=str(camera.max_zoom()/2) #These functions set the resolution, zoom and image quality to the selected value def set_res_vga(): global resolution, r1, r2 resolution=(640, 480) r1="1024x768" r2="X 640x480" def set_res_08(): global resolution, r1, r2 resolution=(1024, 768) r1="X 1024x768" r2="640x480" def set_zoom_0(): global zoom, z1, z2, z3 zoom=0 z1="X 0" z2=str(camera.max_zoom()/4) z3=str(camera.max_zoom()/2) pic=camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240,180)) def set_zoom_quarter_max(): global zoom, z1, z2, z3 zoom=camera.max_zoom()/4 z1="0" z2="X " + str(camera.max_zoom()/4) z3=str(camera.max_zoom()/2) pic=camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240,180)) def set_zoom_half_max(): global zoom, z1, z2, z3 zoom=camera.max_zoom()/2 z1="0" z2=str(camera.max_zoom()/4) z3="X " + str(camera.max_zoom()/2) pic=camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240,180)) def set_qual_50(): global q, q1, q2 q=50 q1="High" q2="X Low" def set_qual_100(): global q, q1, q2 q=100 q1="X High" q2="Low" #In order for the viewfinder to correspond to the zoom level, we must take a picture (without saving it), close and open the viewfinder #These steps are necessary because of the way the functions are currently defined in PyS60, and have a slight impact on performance #Future releases of PyS60 may have optimized functions pic=camera.take_photo('RGB', resolution, zoom) camera.stop_finder() camera.start_finder(vf, size=(240,180)) #We now create a loop that "waits" for keys to be pressed running=True while running: if keyboard.pressed(EScancodeSelect): pic=camera.take_photo('RGB', resolution, zoom) #Take the picture pic.save(photo_savepath, quality=q) #Save it photocamera() #Restart camera in photo mode if keyboard.pressed(EScancodeRightSoftkey):quit() appuifw.app.menu=[(u"Zoom", ((u"%s" % z1, set_zoom_0), (u"%s" % z2, set_zoom_quarter_max), (u"%s" % z3, set_zoom_half_max))), (u"Resolution", ((u"%s" % r1, set_res_08), (u"%s" % r2, set_res_vga))), (u"Quality", ((u"%s" % q1, set_qual_100), (u"%s" % q2, set_qual_50))), (u"Exit", quit)] e32.ao_yield()
def start_view(): camera.start_finder(viewfinder, backlight_on = 1, size=(320, 240))
def start( ): camera.start_finder( vfCallback ) appuifw.app.menu = [(u'Capture', capture), (u'Stop', stop), (u'Exit', __exit__)]
def start( ): camera.start_finder( vfCallback, backlight_on=1, size=(160, 120) ) appuifw.app.menu = [(u'Stop', stop), (u'Exit', __exit__)]