如何从文件路径中删除settings.MEDIA_ROOT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从文件路径中删除settings.MEDIA_ROOT相关的知识,希望对你有一定的参考价值。
我有用于在上传视频时创建缩略图的代码-看起来像这样:
views.py发布方法:
if form.instance.thumbnail == 'images/clearpath_logo/Logo.jpg':
thumb_title = form.instance.title.replace(" ", "")
in_path = str(settings.MEDIA_ROOT) + "/" + str(form.instance.video_file)
out_path = str(settings.MEDIA_ROOT) + "/images/" + thumb_title + ".png"
if create_thumbnail(in_path, out_path):
form.instance.thumbnail = "images/" + thumb_title + ".png"
其中create_thumbnail
是辅助函数。它看起来像这样:
def create_thumbnail(input_path, output_path):
"""
Save first frame of video for use as video thumbnail.
:param input_path: video input path
:param output_path: image output path
:return: Boolean
"""
cap = cv2.VideoCapture(input_path)
ret, frame = cap.read()
if ret:
return cv2.imwrite(output_path, frame)
else:
pass
我主要关心的是从每个文件路径中删除settings.MEDIA_ROOT
。如何避免像这样手动输入文件路径?还是有一种方法可以使出helper函数中的表单方法并直接调用表单实例URL?我想清理此代码。
答案
根据您所提供的信息并牢记,我对任何表格一无所知,而且我不知道cv2
的作用,这是我可能会整理的方法:
def create_thumbnail(video_file, title):
"""
Save first frame of video for use as video thumbnail.
:param video_file: video file from the form instance
:param title: the title of the thumbnail
:return: path to the thumbnail
"""
in_path - f'settings.MEDIA_ROOT/video_file'
out_path = f'settings.MEDIA_ROOT/images/title.png'
cap = cv2.VideoCapture(input_path)
ret, frame = cap.read()
if ret:
image = cv2.imwrite(output_path, frame)
if image:
return out_path
return ''
if form.instance.thumbnail == 'images/clearpath_logo/Logo.jpg':
thumb_title = form.instance.title.replace(" ", "")
form.instance.thumbnail = create_thumbnail(form.instance.video_file, thumb_title)
N.B。请注意,您的代码与将视频文件命名为其他人的代码完全不一样。缩略图将被覆盖。一种简单的解决方案是为缩略图指定一个随机名称。
以上是关于如何从文件路径中删除settings.MEDIA_ROOT的主要内容,如果未能解决你的问题,请参考以下文章