我正在使用JavaScript创建图像编辑器,最终得到分辨率为1750×1250的中等图像文件。我使用base64
从画布解码了图像,然后使用PHP将其发送到服务器端。
这很重要,当我尝试使用file_put_contents
保存该图像时,需要花费很长的时间,将近5分钟的时间来保存图像。有什么想法可以减少时间处理吗?在那个时间以中等分辨率编辑该图像没有任何意义。
我尝试使用另一种方法,例如:curl_init
,fopen()
等。
我正在搜索
file_put_contents() is very slow when working with lots of images
但是我没有找到答案。
答案 0 :(得分:0)
速度较慢可能是服务器上载(而非下载)时间。
我已经在您的个人资料中看到您是ITHB的学生(在印度尼西亚?)。在您的国家/地区,人们的上网速度并不快,上传速度却非常慢。
如果您在使用base64
之前将图像(file_put_contents
格式)上传到服务器后立即进行检查,则可以找到上传时间。
如果您将非base64
格式的图像发送到服务器,则可以减少上传时间。例如,您可以这样做:
function base64ToBlob(base64Image)
{
var binary = atob(base64Image.split(',')[1]),
img_buffer = [];
i = 0;
for(; i < binary.length; i++)
img_buffer.push(binary.charCodeAt(i));
return new Blob([new Uint8Array(img_buffer)], {type: 'image/jpg'})
}
var base64Image = canvas.toDataURL('image/jpeg'),
formData = new FormData(),
xhr = new XMLHttpRequest();
formData.append('image', base64ToBlob(base64Image));
xhr.open('POST', 'imageSave.php', true);
xhr.send(formData);