我想使用imagejpeg()
创建图像,但它们渲染所需的时间比加载页面所需的时间要长,因此图像要么不显示,要么被截断。
我试图延迟加载页面,直到完全创建图像而没有解决方法,所以现在我试图在页面加载之前创建图像。
我的失败如下:
function createimages(x) {
$.post("image-dev.php?curID=" + x, function(rdata) {
console.log(rdata);
});
setTimeout(function() {
window.location = "image-review.php?curID=" + x;
}, 5000);
}
image-dev.php是我的图像创建文件,它从我的数据库中提取所有必要的数据,然后使用imagejpeg创建并保存我的文件夹。
如果我直接导航到image-dev.php并且关联了正确的ID。我的图像被正确创建和保存。
我希望在加载图片评论页面之前,我可以使用AJAX调用image-dev.php。我希望这会“预先开发”图像,以便在审阅时能够正确加载。
我的rdata的console.log显示image-dev.php正在加载并执行,但文件没有被创建。
在场景后面创建图像是否存在问题?
答案 0 :(得分:1)
当图像已经创建时,php可以返回" true"。 使用ajax,你可以做到这一点。
function createimages(x){
$.ajax({
url: "image-dev.php?curID="+x,
beforeSend: function( xhr ) {
//here you can hide elements or other DOM manipulations
}
}).done(function( rdata) {
console.log(rdata);
//when php is ready you can show images or other DOM manipulations
}
});
});
答案 1 :(得分:0)
我决定放弃发展我的图像并使用你的策略的想法。
由于图像在显示时仍然截断,我现在在图像评论页面上有占位符图像,并在完成后加载新图像。
我还不确定如何查看图片是否被截断,因此我必须在重置占位符src属性之前添加延迟。
$.ajax({
type: 'POST',
url: "image-dev.php?curID="+x,
success: function(rdata) {
console.log(rdata);
setTimeout(function(){
$('#placeholder').attr('src', 'newImage.jpg');
},5000);
}
});
这似乎可以接受!