django页面中生成了两个图像...一个永不加载

时间:2019-05-29 14:06:18

标签: python django matplotlib

这是一个奇怪的问题。我有一个视图,该视图在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之类的东西?

0 个答案:

没有答案