2017-08-22 4 views
0

Je suis en train de faire une fonction qui fait vignette d'une image mais je suis incapable d'ouvrir le fichier image.incapable d'utiliser PIL en vue django fonction

def create_thumbnail(request): 
    slug = 'yftguhjkn' 
    post = get_object_or_404(Post, slug=slug) 
    if post: 
     markdownify = import_string(MARKDOWNX_MARKDOWNIFY_FUNCTION) 
     content = BeautifulSoup(markdownify(post.content), "html5lib") 
     try: 
      img_link = content.findAll('img')[0].get('src') 
      print(img_link) 
      filename = img_link.split('/')[-1] 
      filename = filename.split('.')[0] 
      file_path = settings.MEDIA_URL + settings.DRACEDITOR_UPLOAD_PATH + post.author.username + '/' + filename + '.jpg' 
      print (file_path) 
      #im = Image.open(img_link) 
      im = Image.open(file_path) 
      print (im.size) 
     except: 
      img_link = 'http://howtorecordpodcasts.com/wp-content/uploads/2012/10/YouTube-Background-Pop-4.jpg' 
     return HttpResponse(img_link) 

Mais il va à l'exception de l'instruction. Quelqu'un peut-il me dire comment résoudre ce problème?

def create_thumbnail(request): 
    slug = 'yftguhjkn' 
    post = get_object_or_404(Post, slug=slug) 
    if post: 
     markdownify = import_string(MARKDOWNX_MARKDOWNIFY_FUNCTION) 
     content = BeautifulSoup(markdownify(post.content), "html5lib") 
     #try: 
     img_link = content.findAll('img')[0].get('src') 
     print(img_link) 
     filename = img_link.split('/')[-1] 
     filename = filename.split('.')[0] 
     file_path = settings.MEDIA_URL + settings.DRACEDITOR_UPLOAD_PATH + post.author.username + '/' + filename + '.jpg' 
     print (file_path) 
     im = Image.open(file_path) 
     print (im.size) 
     #except: 
      #img_link = 'http://howtorecordpodcasts.com/wp-content/uploads/2012/10/YouTube-Background-Pop-4.jpg' 
     return HttpResponse(file_path) 
+2

Pouvez-vous supprimer l'essai, sauf et afficher le message d'erreur de sortie? – kshikama

+0

FileNotFoundError à/réglages/miniatures/ –

Répondre

0

Je pense que le oreiller ont besoin d'un bon chemin (chemin complet) de l'image à ouvrir.

im = Image.open(file_path) 

la sortie commond de settings.MEDIA_URL est /media/ droit? , vous devez file_path est le chemin complet, par exemple:

/home/myuser/myenv/myproject/media/images/uploads/2017/05/29/foobar.png 

Si votre settings.MEDIA_ROOT est:

/home/myuser/myenv/myproject/media 

Vous pouvez faire avec:

os.path.join(settings.MEDIA_ROOT, settings.DRACEDITOR_UPLOAD_PATH, image_name) 
# example: 
'/home/myuser/myenv/myproject/media' + 'images/uploads/2017/05/29/' + 'foobar.png' 

vous pouvez également en utilisant BASE_DIR pour dir absolu.

+0

il est dit à FileNotFoundError/paramètres/miniatures/ [Errno 2] Aucun fichier ou répertoire: '/media/articles/vasupal/e97e0059af-vasu_photo.jpg' –

+0

s'il vous plaît mettre à jour vos vues actuelles ' .py' ... –

+0

comment faire cela ?? –