Canvas 压缩画布png图像

Canvas 压缩画布png图像,canvas,fabricjs,Canvas,Fabricjs,我使用canvas fabric截屏图像并输出为图像,然后通过php使用ajax发送邮件。邮件发送速度非常慢,就像40秒前的邮件一样。我注意到我创建的图像文件大小是邮件中花费时间最多的一个 每个邮件包含4个图像,每个图像约为200KB,每个图像多800kb 我得想办法把它压缩下来。它总是png:是无损的 var url = this.canvas.toDataURL(); 我发现了这个 它说CanvasPngCompression.replaceToDataURL()替换toDataURL()

我使用canvas fabric截屏图像并输出为图像,然后通过php使用ajax发送邮件。邮件发送速度非常慢,就像40秒前的邮件一样。我注意到我创建的图像文件大小是邮件中花费时间最多的一个

每个邮件包含4个图像,每个图像约为200KB,每个图像多800kb

我得想办法把它压缩下来。它总是png:是无损的

var url = this.canvas.toDataURL();
我发现了这个

它说CanvasPngCompression.replaceToDataURL()替换toDataURL()

我不能让它工作,如何使用它


那么,我是否可以将画布图像大小压缩到100kb??需要一些建议来压缩这些图像。

要获得较小的大小,请将dataURL从base64转换为Uint8Array,然后从中创建一个blob并发送该blob。由于Base64编码在每个字节中只使用6位,您将立即获得25%的文件大小缩减(200Kb变为150Kb)@Blindman67,在邮件中,图像附件是b64编码的…@Blindman67图像质量如何?@Kaido因此无法工作?@deecheok,Blindman的建议是有充分根据的,只是因为base64编码版本比图像的实际八位字节流版本大,但它实际上是完全相同的数据,只是写入方式不同,所以它需要更多的空间(比如
hello
转换为b64变为
aGVsbG8=
,更大)。所以要回答你的问题,质量是完全一样的。我的观点是,是的,它不会减少最终大小,因为当你在邮件中发送图像时,它们必须转换成b64版本。1/2