Exemple #1
0
def default(request):
    # GET params
    params = request.GET
    
    # get image width, check limits
    w = min(int(params.get('w', PLACEHOLDER_DEFAULT_WIDTH)), PLACEHOLDER_MAX_WIDTH)
    h = min(int(params.get('h', PLACEHOLDER_DEFAULT_HEIGHT)), PLACEHOLDER_MAX_HEIGHT)
    
    # check minimum values
    w = max(w, PLACEHOLDER_MIN_WIDTH)
    h = max(h, PLACEHOLDER_MIN_HEIGHT)
    
    # create placeholder image
    api = ImageAPI()
    api.create_image(w, h, PLACEHOLDER_BG_COLOR)
    
    # placeholder text
    text = params.get('t', "%s x %s" % (w, h))
    
    # calculate best font size
    font_size_auto = min(min(w/4, h/4), 40)
    font_size = int(params.get('ts', font_size_auto))
    
    # write on center middle
    api.write_on_center(text, font_size, PLACEHOLDER_TEXT_COLOR)
    
    # write to response
    response = HttpResponse (mimetype="image/png")
    api.image.save(response, "PNG")
    return response
Exemple #2
0
def default(request):
    url = request.GET.get("url", "").strip()
    if not url:
        return HttpResponseBadRequest("missing url parameter")

    # instantiate new API
    api = ImageAPI()

    try:
        api.open_from_internet(url)
    except urllib2.HTTPError as e:
        logger.debug("could not download image from %s reason: %s" % (url, e))
        return HttpResponseBadRequest("invalid url")
    except ValueError as e:  # unknown url type
        logger.debug("could not use image url %s reason: %s" % (url, e))
        return HttpResponseBadRequest("invalid url")
    except IOError as e:
        logger.debug("could not process image from %s reason: %s" % (url, e))
        return HttpResponseBadRequest("invalid url")

    padding_size = request.GET.get("bp", BORDER_PADDING)
    border_size = request.GET.get("bs", BORDER_SIZE)
    fill_color = request.GET.get("bfc", BORDER_FILL_COLOR)
    border_color = request.GET.get("bc", BORDER_COLOR)

    # apply border with default values
    api.apply_border(int(padding_size), int(border_size), fill_color, border_color)

    # write to response
    response = HttpResponse(mimetype="image/png")
    api.image.save(response, "PNG")
    return response
Exemple #3
0
def _get_eyes(request, url):    
    cache_key = create_cache_key({"url": url, "type": "eyes"})
    
    # download image from internet
    api = ImageAPI()
    api.open_from_internet(url)
    
    # try to get from cache
    faces = cache.get(cache_key)
    if faces is not None:
        logger.debug("found faces in cache for %s" % url)
    else:
        # identify faces
        faces = detect_eyes_from_pil_image(api.image)
        
        # put on cache for 1h
        cache.set(cache_key, faces, 3600)
        
    return api, faces