def make_thumb(photo): filename = os.path.join('../pictures', photo) try: thumbnail = get_thumbnail(filename, '200x200', crop='center') except FileNotFoundError: generic = os.path.join('../pictures', '_generic.jpg') thumbnail = get_thumbnail(generic, '200x200', crop='center') return thumbnail
def text_filter(regex_base, value): """ A text-filter helper, used in ``markdown_thumbnails``-filter and ``html_thumbnails``-filter. It can be used to build custom thumbnail text-filters. :param regex_base: A string with a regex that contains ``%(captions)s`` and ``%(image)s`` where the caption and image should be. :param value: String of text in which the source URLs can be found. :return: A string ready to be put in a template. """ from thumbnails import get_thumbnail regex = regex_base % { 'caption': '[a-zA-Z0-9\.\,:;/_ \(\)\-\!\?\"]+', 'image': '[a-zA-Z0-9\.:/_\-\% ]+' } images = re.findall(regex, value) for i in images: image_url = i[1] image = get_thumbnail( image_url, **settings.THUMBNAIL_FILTER_OPTIONS ) value = value.replace(i[1], image.url) return value
def get_thumb(uniqueid): upload_folder = myapp.config['UPLOAD_FOLDER'] try: file = File.query.filter_by(unique_id=uniqueid).first() path = os.path.join(upload_folder, file.unique_id, file.name) thmbnail = get_thumbnail(path, "200") return send_file(thmbnail.path) except Exception: return
def thumbnail(filename): path = rootpath + "/%s" % filename # print(path) thumbnail_filename = get_thumbnail(path, '200x200', crop='center', force=True).url resp = Response(open(thumbnail_filename, 'rb'), mimetype="image/jpeg") return resp
def test_get_thumbnail(self, mock_get_thumbnail, mock_save, mock_cache_set): thumbnail = get_thumbnail('http://puppies.lkng.me/400x600/', '200') self.assertTrue(mock_get_thumbnail.called) self.assertTrue(mock_cache_set.called) self.assertTrue(mock_save.called) mock_save.assert_has_calls([ mock.call(thumbnail.path, b''), mock.call(thumbnail.alternative_resolution_path(2), b''), ]) self.assertIsInstance(thumbnail, Thumbnail)
def play_images(data): i = 1 for img in data["images"]: if not utils.show_real_thumbnails(): add_page("%s %d" % (utils.translate(30017), i), img, thumbnails.get_thumbnail(str(i))) else: add_page("%s %d" % (utils.translate(30017), i), img, img) i = 1 if i == 100 else i + 1 xbmc.executebuiltin("Container.SetViewMode(500)")
def test_force(self, mock_get_thumbnail, mock_save, mock_cache_set): get_thumbnail('http://puppies.lkng.me/400x600/', '200', force=True) get_thumbnail('http://puppies.lkng.me/400x600/', '200', force=True) get_thumbnail('http://puppies.lkng.me/400x600/', '200') self.assertEqual(len(mock_get_thumbnail.call_args_list), 4) self.assertEqual(len(mock_save.call_args_list), 4) self.assertEqual(len(mock_cache_set.call_args_list), 2)
def generate_thumbnail(self, obj, thumbnail=None): if not thumbnail: return {} #TODO: support multiple thumbnail sizes thumbnail_size = thumbnail.pop('size') obj_path = obj['path'] thumbnail_file_path = get_thumbnail(obj_path, thumbnail_size, **thumbnail).path _, extension = os.path.splitext(obj_path) thumbnail_path = os.path.join( obj['obj_dir'], 'thumbnail{extension}'.format(extension=extension)) shutil.copyfile(thumbnail_file_path, thumbnail_path) return {'thumbnail': self.form_obj_url(thumbnail_path)}
def render(self, context): from thumbnails import get_thumbnail # imported inline in order for mocking to work if self.original and self.size: original = self.original.resolve(context) size = self.size.resolve(context) options = {} for key in self.options: options[key] = self.options[key].resolve(context) context[self.variable_name] = get_thumbnail(original, size, **options) else: raise TemplateSyntaxError() return ''
def get(self, request): reqsize = request.GET.get("size", "f") size = self._size_map.get(reqsize, None) _id = os.path.basename(request.path_info) pic = Picture.objects.get(id=_id) picpath = path_withroot(pic.path) if size != None: thumbnail = get_thumbnail(path_withroot(pic.path), size) picpath = thumbnail.path with open(path_withroot(picpath), "rb") as pic_file: return HttpResponse(pic_file.read(), content_type="image/jpeg")
def render(self, context): from thumbnails import get_thumbnail # imported inline in order for mocking to work if self.original and self.size: original = self.original.resolve(context) size = self.size.resolve(context) options = {} for key in self.options: options[key] = self.options[key].resolve(context) context[self.variable_name] = get_thumbnail( original, size, **options) else: raise TemplateSyntaxError() return ''
def get_photo(img): photos_dir = current_app.config.get("UPLOADED_PHOTOS_DEST") use_thumb = request.args.get("thumb") img_path = os.path.join(photos_dir, img) if os.path.exists(img_path): if use_thumb: try: thumb = get_thumbnail(os.path.join(img_path), "x40") return send_from_directory("/", thumb.path.lstrip('/')) except IOError: # images with alpha channels can't be converted by python-thumbnails pass else: return send_from_directory(photos_dir, img) return send_from_directory(photos_dir, "unknown_thumb.png" if use_thumb else "unknown.png")
def makeWebhookResult(req): if req.get("result").get("action") != "login": return {} result = req.get("result") parameters = result.get("parameters") speech = get_thumbnail( 'data:image/jpeg;base64,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QSRuLXN5H8iOsdiytqhbHln2M5wU1pm5UecaeRmiqitcWdZokjPgdx71w7OF2QlzVM58sOcXuJCpwG+rSy/s4MtvK1k8PP1rY5cnsj5r85RNbopYzsLNc5oawdzRz9ytPCpyfNazKvClJ7mzUaiofI9z3uL3ONyTzXbrrjCPLE6UIRgtI/NZmYoUkBh17HHFQooBQooBQpIUVCihdigFQooUUKKFJUuxUKITYFCihRUMiQCoVMUMhQbFQpIU+kMiQooDDL2ONsUKKhRQChRQChSULsUKKAULsVCihdihUKFJCihRCgFDLYoUUBIUVDLYoUUAqFJC7PpDIkBhl7HGFC7FCioUUAoUUAoUlC7FCigFC7FQooVMULsUKSFFCiFCihdihRQpIBUMtihRQCoUkLsUGzDAr2OQKAULsUKKhRQChRQChSULsUKIQChUxUKKFQoZbFASFQoUQVCihRQooUkAqGWxQooBUKSAwy9jkCEAoUUKhQoqFFAKFFAKFJQooUUAoVCoUUKKGQoCQqFCiCoUUKKFFASFFQy2KFFASAw69TkEhRCAUKKFQoUVCigFCihRQEoUUKKAUKhUKKFFDIUBIVMUKIKhRQqFCigJCioZIUKSAw69TjihSQohCigEIVChRQoqAUKKFFAShUKFFAKFFQooUUMhQEhdihRChRQqFCigJCioZIkKYdexxxUBIUUKIQChRCFFCihRUAoUQgFCkoVChRCAUKKhRQooZCEBIXYoUQoBQqFDIUBIUUBh16nKJQChRCFEIBQohCihRQoqAkKIQChRUKhQohAKFFQooUkMhCAUAhDJCFCigQoZEEAhCigP/9k=', '300x300', crop='center') print("Response:") print(speech) return { "speech": speech, "displayText": speech, #"data": {}, # "contextOut": [], "source": "apiai-onlinestore-shipping" }
def text_filter(regex_base, value): """ A text-filter helper, used in ``markdown_thumbnails``-filter and ``html_thumbnails``-filter. It can be used to build custom thumbnail text-filters. :param regex_base: A string with a regex that contains ``%(captions)s`` and ``%(image)s`` where the caption and image should be. :param value: String of text in which the source URLs can be found. :return: A string ready to be put in a template. """ from thumbnails import get_thumbnail regex = regex_base % { 'caption': '[a-zA-Z0-9\.\,:;/_ \(\)\-\!\?\"]+', 'image': '[a-zA-Z0-9\.:/_\-\% ]+' } images = re.findall(regex, value) for i in images: image_url = i[1] image = get_thumbnail(image_url, **settings.THUMBNAIL_FILTER_OPTIONS) value = value.replace(i[1], image.url) return value
# -*- coding: utf-8 -*- import thumbnails from tests import data from thumbnails.conf import settings URL = 'https://unsplash.imgix.net/photo-1422405153578-4bd676b19036?q=75&fm=jpg&' \ 's=5ecc4c704ea97d85ea550f84a1499228' print(settings.THUMBNAIL_PATH) print(thumbnails.get_thumbnail(URL, '800x800').url) print(thumbnails.get_thumbnail(URL, '800').url) print(thumbnails.get_thumbnail(URL, 'x800').url) print(thumbnails.get_thumbnail(URL, '400x400', crop='center').url) print(thumbnails.get_thumbnail(URL, '400x400', crop='top').url) print(thumbnails.get_thumbnail(URL, '400x400', crop='left').url) print(thumbnails.get_thumbnail(data.BASE64_STRING_OF_IMAGE, '200x200', crop='center').url)
def preview(self): return get_thumbnail(os.path.join(settings.MEDIA_ROOT, self.file.name), '1400')
def thumbnail(self): return get_thumbnail(os.path.join(settings.MEDIA_ROOT, self.file.name), '300')
def test_dummy(self): with override_settings(THUMBNAIL_DUMMY=True): self.assertEqual( get_thumbnail('t.jpg', '200x200').url, 'http://puppies.lkng.me/200x200' )
# # thumbnails # import os from thumbnails import get_thumbnail SIZE="450x300" img = get_thumbnail(os.path.abspath('./static/images/post_photos/IMG_2625.jpg'), '300x300', crop='center') print(img.path) img = get_thumbnail(os.path.abspath('./static/images/post_photos/IMG_2649.jpg'), '300x300', crop='center') print(img.path) img = get_thumbnail(os.path.abspath('./static/images/post_photos/IMG_3582.jpg'), '300x300', crop='center') print(img) print(dir(img)) print(img.name) print(img.path)
def test_thumbnail(self): # path = os.path.abspath('public/media/elmar.jpg') path = '/Volumes/Work/Projects/ElmarHinzDjango/public/media/Coursera' \ '-Bioinformatics-Finding-Hidden-Messages-in-DNA.pdf' tn = get_thumbnail(path, '300x300', crop='center') x = 1
def test_dummy(self): with override_settings(THUMBNAIL_DUMMY=True): self.assertEqual( get_thumbnail('t.jpg', '200x200').url, 'http://puppies.lkng.me/200x200')
def readTitleList(baseUrl, dataBody, pageParam, rePattern, funcUrl, funcHtml, funcImg, funcName, funcDate): try: baseUrl = baseUrl.strip() dataBody = dataBody.strip() count = 0 lastcount = 0 results = [] print ("------------------------------- start -------------------------") md = hashlib.md5() md.update(baseUrl.encode('utf-8') + dataBody.encode('utf-8')) urlmd5 = md.hexdigest() for i in range(0, 1): page = baseUrl.format(page=pageParam(i)) body = dataBody.format(page=pageParam(i)) header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'} print ("--------------------------------------------------------------") print (page, body) if (body == ""): req = urllib.request.Request(url=page,headers=header) response = urllib.request.urlopen(req, timeout=120) else: req = urllib.request.Request(url=page, data=body.encode(encoding="utf-8",errors="ignore"), headers=header,method='POST') response = urllib.request.urlopen(req, timeout=120) html = funcHtml(response.read()) if html.strip() == "": break else: datamd5 = str(i) logpath = './logs/{0}_{1}.html'.format(urlmd5, datamd5) print("write to path : {0}".format(logpath)) try: f = codecs.open(logpath,'w','utf-8') s = f.write ("----------------------------url-----------------------\n") s = f.write (page) s = f.write ("\n\n----------------------------header-----------------------\n") s = f.write (str(header)) s = f.write ("\n\n----------------------------body-----------------------\n") s = f.write (body) s = f.write ("\n\n----------------------------html-----------------------\n") s = f.write (html) f.close() except: print ("write to path {0} failed".format(logpath)) traceback.print_exc() lastcount = count print ("{0} bytes".format(len(html))) print ("--------------------------------------------------------------") for m in re.finditer(rePattern, html): name=m.group("name") url=m.group("url") img=m.group("img") date=m.group("date") count = count + 1 url = funcUrl (url, page) img = funcImg(img, page) name = funcName(name) date = funcDate(date) thumbnails_path = "" if img != "": try: #print("trying image: {0} for {1}".format(repr(img), repr(name))) thumbnails_path = thumbnails.get_thumbnail(img, "234x182", crop="center", scale_up=True).path thumbnails_path = thumbnails_path.replace(thumbnails.settings.defaults["THUMBNAIL_PATH"], "http://vpower.crpower.com.cn:19000/public/thumbnails") except: #print("invalid image: {0} for {1} ".format(img, name)) pass results.append({"id":count, "name":name, "url":url, "img":img, "date":date, "thumbnails": thumbnails_path}) print ("#{0}".format(count)) #print("[{0}] url={2},img={3},date={4},thumbnails={5}".format(count, name, url, img, date,thumbnails_path)) if lastcount == count or count > 300: break except: traceback.print_exc() return results
def test_get_thumbnail_cached(self): self.assertTrue(get_thumbnail('', '200'))
def _get_thumbnail(self, size="200x200", crop="center"): if self.image: try: return get_thumbnail(self.image.file.name, size, crop=crop) except Exception as e: logger.error(e)
def thumbnail(self, obj): img = get_thumbnail(obj.imagem, size="150x150", crop="center") return '<img src="{0}"/>'.format(img.url)