Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# open camera connection
camera = gp.check_result(gp.gp_camera_new())
gp.check_result(gp.gp_camera_init(camera))
# get configuration tree
config = gp.check_result(gp.gp_camera_get_config(camera))
# find the capture target config item
capture_target = gp.check_result(
gp.gp_widget_get_child_by_name(config, 'capturetarget'))
# check value in range
count = gp.check_result(gp.gp_widget_count_choices(capture_target))
if value < 0 or value >= count:
print('Parameter out of range')
return 1
# set value
value = gp.check_result(gp.gp_widget_get_choice(capture_target, value))
gp.check_result(gp.gp_widget_set_value(capture_target, value))
# set config
gp.check_result(gp.gp_camera_set_config(camera, config))
# clean up
gp.check_result(gp.gp_camera_exit(camera))
return 0
OK, image_format = gp.gp_widget_get_child_by_name(config, 'imageformat')
if OK >= gp.GP_OK:
# get current setting
value = gp.check_result(gp.gp_widget_get_value(image_format))
# make sure it's not raw
if 'raw' in value.lower():
app.logger.debug('Cannot preview raw images')
return 1
# find the capture size class config item
# need to set this on my Canon 350d to get preview to work at all
OK, capture_size_class = gp.gp_widget_get_child_by_name(
config, 'capturesizeclass')
if OK >= gp.GP_OK:
# set value
value = gp.check_result(gp.gp_widget_get_choice(capture_size_class, 2))
gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
# set config
gp.check_result(gp.gp_camera_set_config(camera, config))
# capture preview image (not saved to camera memory card)
app.logger.debug('Capturing preview image')
camera_file = gp.check_result(gp.gp_camera_capture_preview(camera))
file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file))
# display image
data = memoryview(file_data)
app.logger.debug(type(data), len(data))
app.logger.debug(data[:10].tolist())
fileName = os.path.join(PI_PREVIEW_DIR, PI_PREVIEW_FILE)
if os.path.exists(fileName):
os.remove(fileName)
Image.open(io.BytesIO(file_data)).save(fileName, "JPEG")
return 0
def set_datetime(config):
OK, date_config = gp.gp_widget_get_child_by_name(config, 'datetime')
if OK >= gp.GP_OK:
widget_type = gp.check_result(gp.gp_widget_get_type(date_config))
if widget_type == gp.GP_WIDGET_DATE:
now = int(time.time())
gp.check_result(gp.gp_widget_set_value(date_config, now))
else:
now = time.strftime('%Y-%m-%d %H:%M:%S')
gp.check_result(gp.gp_widget_set_value(date_config, now))
return True
return False
def set_datetime(config):
OK, date_config = gp.gp_widget_get_child_by_name(config, 'datetime')
if OK >= gp.GP_OK:
widget_type = gp.check_result(gp.gp_widget_get_type(date_config))
if widget_type == gp.GP_WIDGET_DATE:
now = int(time.time())
gp.check_result(gp.gp_widget_set_value(date_config, now))
else:
now = time.strftime('%Y-%m-%d %H:%M:%S')
gp.check_result(gp.gp_widget_set_value(date_config, now))
return True
return False
OK, image_format = gp.gp_widget_get_child_by_name(config, 'imageformat')
if OK >= gp.GP_OK:
# get current setting
value = gp.check_result(gp.gp_widget_get_value(image_format))
# make sure it's not raw
if 'raw' in value.lower():
app.logger.debug('Cannot preview raw images')
return 1
# find the capture size class config item
# need to set this on my Canon 350d to get preview to work at all
OK, capture_size_class = gp.gp_widget_get_child_by_name(
config, 'capturesizeclass')
if OK >= gp.GP_OK:
# set value
value = gp.check_result(gp.gp_widget_get_choice(capture_size_class, 2))
gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
# set config
gp.check_result(gp.gp_camera_set_config(camera, config))
# capture preview image (not saved to camera memory card)
app.logger.debug('Capturing preview image')
camera_file = gp.check_result(gp.gp_camera_capture_preview(camera))
file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file))
# display image
data = memoryview(file_data)
app.logger.debug(type(data), len(data))
app.logger.debug(data[:10].tolist())
fileName = os.path.join(PI_PREVIEW_DIR, PI_PREVIEW_FILE)
if os.path.exists(fileName):
os.remove(fileName)
Image.open(io.BytesIO(file_data)).save(fileName, "JPEG")
return 0