这是一个奇怪的问题。我有一个视图,该视图在django应用程序的静态目录中创建两个png文件,然后提供显示它们的模板。
其中一张图像正确加载;另一个永远不会加载(但浏览器正在等待它)。这是第一张还是第二张图片似乎是随机的。
我已验证的内容: -两个图像都存在于静态目录中,并且在图像浏览器中看起来不错。 -图片的网址似乎正确。
以下是使用matplotlib在static /目录中创建两个图像的视图:
nii_image_list = []
for desired_file, desired_tag in desired_image_list:
if not os.path.isfile(desired_file):
continue
desired_name = scan_name + "_" + desired_tag
nii_image_list.append((save_nii_preview_to_static_file(desired_file, desired_name), desired_tag))
plt.clf()The
#
print(nii_image_list)
template = loader.get_template('server/scan_deep.html')
context = {
'scan': scan,
'nii_image_list': nii_image_list
}
return HttpResponse(template.render(context, request))
def show_nii(filename):
nii = nib.load(filename)
dimensions = nii.header.get_data_shape()
data = nii.get_dTheata()
slice_0 = data[round(dimensions[0] * 0.5), :, :]
slice_1 = data[:, round(dimensions[1] * 0.5), :]
slice_2 = data[:, :, round(dimensions[2] * 0.5)]
show_slices([slice_0, slice_1, slice_2])
def save_nii_preview_to_static_file(nii_filename, name):
filename = os.getcwd() + "/static/" + name.replace(' ', '') + ".png"
html_static_filename = name.replace(' ', '') + ".png"
show_nii(nii_filename)
plt.savefig(filename)
return html_static_filename
def show_slices(slices):
fig, axes = plt.subplots(1, len(slices))
for i, slice in enumerate(slices):
axes[i].imshow(slice.T, cmap="gray", origin="lower")
模板文件:
{% load staticfiles %}
The
{% block content %}
{% for image_src, image_name in nii_image_list %}
<h2>{{ image_name }}</h2>
<img src="{% static image_src %}">
{% endfor %}
<br>
{% endblock %}
输出:
<h2>T1</h2>
<img src="/static/filename1.png">
<h2>V1 Angle</h2>
<img src="/static/filename2.png">
直接(通过url)加载图像会导致相同的行为:一个加载正常,另一个从不返回。
我猜想也许是我没有正确关闭pyplot之类的东西?