如何加快保存Base64图片的速度?

3

目前我的网站允许用户保存画布图像,但问题在于这需要很长时间。我将画布图像作为Base64发送到我的PHP进行解码,并将其保存为PNG图像在我的服务器上。此外,我已经了解到Base64解码会增加图像大小约30%。是否有更好的方法可以更快地保存画布图像?


你为什么要对它进行Base64编码? - Blender
2
我正在使用 canvas.toDataURL 函数,并将其发送到一个 PHP 页面,该页面会将其解码为 base64 格式。 - zigzag.bond
1
慢的部分可能是用户与服务器之间的连接,这一点你无法做太多改变。 - user557846
2
你的用户从哪里发送b64数据?如果他们在家用电脑上,他们可能只能使用ISP提供的“闪电般快速”的40-60k/s上传速度。 - Marc B
2个回答

5

您可以通过指定jpg作为图像编码格式来减小base64的大小(因此减少上传时间):

canvas.toDataURL('image/jpeg', 0.8);

您可以通过降低JPEG图像的质量(从0.0 => 差质量到1.0 => 好质量)来进一步优化。


0

我在一个项目中遇到了类似的速度问题,无法解决。嘿,Pierre,你提供的解决方案大大减小了图像数据的大小,但同时你会面临从这些数据保存的图像出现问题。我也做了同样的事情,当我尝试保存带有透明背景的PNG图像时,得到了意外的图像,有些变成了黑色。因此,我坚持不使用canvas.toDataURL('image/jpeg', 0.8);,仍在寻找其他替代方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接