我正在尝试制作一个制作图像缩略图的功能,但我无法打开图像文件。
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)
但它除了声明外。有人可以告诉我如何解决它。
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)
答案 0 :(得分:0)
我认为 Pillow 需要从图像中打开正确的路径(完整路径)。
im = Image.open(file_path)
settings.MEDIA_URL
的commond输出是/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
作为绝对目录。