【问题标题】:unable to use PIL in django view function无法在 django 视图功能中使用 PIL
【发布时间】:2017-08-22 13:11:28
【问题描述】:

我正在尝试制作一个生成图像缩略图的函数,但我无法打开图像文件。

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)

但它会出现 except 声明。谁能告诉我如何解决它。

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)

【问题讨论】:

  • 你能去掉try,除了并发布输出错误信息吗?
  • FileNotFoundError at /settings/thumbnail/

标签: python django python-3.x django-views pillow


【解决方案1】:

我认为枕头需要一个正确的路径(完整路径)从图像中打开。

im = Image.open(file_path)

settings.MEDIA_URL 的共同输出是/media/ 对吗? 所以,你需要file_path是完整路径,例如:

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

如果您的settings.MEDIA_ROOT 是:

/home/myuser/myenv/myproject/media

你可以这样做:

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'

您也可以使用BASE_DIR 作为绝对目录。

【讨论】:

  • 它在 /settings/thumbnail/ 处显示 FileNotFoundError [Errno 2] 没有这样的文件或目录:'/media/articles/vasupal/e97e0059af-vasu_photo.jpg'
  • 怎么做??
  • 用你当前的观点更新你的帖子。def create_thumbnail(request): after "..告诉我如何解决它。"
  • 请告诉我如何解决它
猜你喜欢
  • 2014-10-29
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
相关资源
最近更新 更多