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
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
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