所以我的问题是,我似乎不明白为什么我的程序不会加载改变的图像。
对“/contours”的ajax调用触发了一个发生图像更改的flask app.route。 在那里,图像再次以相同的名称保存,因此旧版本被覆盖。 那部分正常工作。
下面是我的代码:
<script>
document.getElementById("rangevalue_low").value = document.getElementById("thresh_low").value;
document.getElementById("rangevalue_high").value = document.getElementById("thresh_high").value;
function render() {
let range_low = document.getElementById("rangevalue_low").value;
let range_high = document.getElementById("rangevalue_high").value;
$.ajax({
url: "/Contours",
data: {
'imagePath': 'static/images/kittens/kittens-2.jpg',
'thresh_low': range_low,
'thresh_high': range_high
},
method: 'POST'
})
.done(() => {
$("#outlined_image").attr("src", "");
setTimeout(() => {
let source = "../static/output/result.jpg";
$("#outlined_image").attr({"src": source, "class": "img_result"});
}, 2000)
})
}
</script>
修改图像和调用render-function的触发是有效的,但是由于某种原因,图像并没有更新,而是始终保持相同的状态,即使到图像的路径现在指向一个新的图像。
提前感谢您的任何帮助。
这很可能是一个缓存问题,因为尽管映像的内容发生了变化,但是URI是一样的。
要强制重新加载图像,您可以在URL上附加一个时间戳:
let source = "../static/output/result.jpg?" + (new Date()).getTime();