Source code for wbia.web.routes_ajax

# -*- coding: utf-8 -*-
"""
Dependencies: flask, tornado
"""
import logging
from flask import request, make_response, current_app
from wbia.control import controller_inject
from wbia.web import appfuncs as appf
import utool as ut
import vtool as vt

(print, rrr, profile) = ut.inject2(__name__)
logger = logging.getLogger('wbia')

register_route = controller_inject.get_wbia_flask_route(__name__)





def _resize_src(image, resize=False, **kwargs):
    # Load image
    if resize is None:
        image_src = appf.embed_image_html(image, target_width=None, target_height=None)
    elif resize:
        image = appf.resize_via_web_parameters(image)
        image_src = appf.embed_image_html(image, target_width=None, target_height=None)
    else:
        image_src = appf.embed_image_html(image)

    return image_src


[docs]@register_route( '/ajax/image/src/<gid>.jpg', methods=['GET'], __route_postfix_check__=False ) def image_src_ext(*args, **kwargs): return image_src(*args, **kwargs)
[docs]@register_route('/ajax/image/src/<gid>/', methods=['GET']) def image_src(gid=None, thumbnail=False, ibs=None, **kwargs): if ibs is None: ibs = current_app.ibs gid = int(gid) gpath = None if 'thumbsize' not in kwargs: kwargs['thumbsize'] = max(int(appf.TARGET_WIDTH), int(appf.TARGET_HEIGHT)) if 'draw_annots' not in kwargs: kwargs['draw_annots'] = False if thumbnail: try: gpath = ibs.get_image_thumbpath(gid, ensure_paths=True, **kwargs) orient = ibs.get_image_orientation(gid) image = vt.imread(gpath, orient=orient) h, w = image.shape[:2] assert h > 0, 'Invalid image thumbnail' assert w > 0, 'Invalid image thumbnail' except AssertionError: gpath = None if gpath is None: gpath = ibs.get_image_paths(gid) image_src = image_src_path(gpath, **kwargs) return image_src
[docs]def image_src_path(gpath, orient='auto', **kwargs): image = vt.imread(gpath, orient=orient) image_src = _resize_src(image, **kwargs) return image_src
[docs]@register_route('/ajax/annot/src/<aid>/', methods=['GET']) def annotation_src(aid=None, ibs=None, **kwargs): if ibs is None: ibs = current_app.ibs if 'dim_size' not in kwargs: kwargs['dim_size'] = max(int(appf.TARGET_WIDTH), int(appf.TARGET_HEIGHT)) image = ibs.get_annot_chips(aid, config2_=kwargs) # image_src = _resize_src(image, **kwargs) image_src = appf.embed_image_html(image, target_height=300) return image_src
[docs]@register_route('/ajax/background/src/<aid>/', methods=['GET']) def probchip_src(aid=None, ibs=None, **kwargs): import cv2 if ibs is None: ibs = current_app.ibs if 'dim_size' not in kwargs: kwargs['dim_size'] = max(int(appf.TARGET_WIDTH), int(appf.TARGET_HEIGHT)) image_filepath = ibs.get_annot_probchip_fpath(aid, config2_=kwargs) image = cv2.imread(image_filepath) x, y, w, h = ibs.get_annot_bboxes(aid) image = cv2.resize(image, (w, h)) # image_src = _resize_src(image, **kwargs) image_src = appf.embed_image_html(image, target_height=300) return image_src
[docs]@register_route('/ajax/part/src/<part_rowid>/', methods=['GET']) def part_src(part_rowid, **kwargs): ibs = current_app.ibs if 'dim_size' not in kwargs: kwargs['dim_size'] = max(int(appf.TARGET_WIDTH), int(appf.TARGET_HEIGHT)) image = ibs.get_part_chips(part_rowid, config2_=kwargs) image_src = appf.embed_image_html(image, target_height=300) return image_src