画布到dataUrl大图像文件(1750×1250)

时间:2018-07-11 07:15:18

标签: javascript php canvas base64

我正在使用JavaScript创建图像编辑器,最终得到分辨率为1750×1250的中等图像文件。我使用base64从画布解码了图像,然后使用PHP将其发送到服务器端。

这很重要,当我尝试使用file_put_contents保存该图像时,需要花费很长的时间,将近5分钟的时间来保存图像。有什么想法可以减少时间处理吗?在那个时间以中等分辨率编辑该图像没有任何意义。

我尝试使用另一种方法,例如:curl_initfopen()等。

我正在搜索

file_put_contents() is very slow when working with lots of images

但是我没有找到答案。

1 个答案:

答案 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);