import array import traceback import png import os import logConfig import status_mod # Fake globals for syntax check import syslog if False: response = None request = None session = None db = None status_mod.sessionUserMgr.setLastVisit(session, request) if logConfig.ctrlSessFrgt: session.forget(response) def fb2png(f_in, f_out, width, height): array_uint16 = array.array('H') # unsigned short array_uint16.fromfile(f_in, width * height) image = [] for row in range(height): line = [] for col in range(width): uint16 = array_uint16[row * width + col] line.append((uint16 >> 11) << 3) # R 0 .. 255 line.append(((uint16 >> 5) & 0x3F) << 2) # G 0 .. 255 line.append((uint16 & 0x1F) << 3) # B 0 .. 255 image.append(line) writer = png.Writer(width, height) # RGB, no alpha, no background, no compression writer.write(f_out, image) @auth.requires(request.ajax==True, requires_login=True) def screenshot(): try: os.mkdir('applications/BS350/static/tmp') except OSError: syslog.syslog(syslog.LOG_ERR, traceback.format_exc()) try: with open('/dev/fb0', 'rb') as f_in: with open('applications/BS350/static/tmp/screenshot.png', 'wb') as f_out: fb2png(f_in, f_out, 240, 320) except: syslog.syslog(syslog.LOG_ERR, traceback.format_exc())