当我在浏览器中上传某个文件时,该文件的类型为jpeg,文件大小为2MB,但当我使用canvas.toDataURL()
将文件编码为base64时,生成的文件大小约为9MB。
为什么base64编码的文件比原始文件大3-4倍?
我已经看到我可以为toDataURl(type, quality)
指定一个选项,但是我无法将其用于png文件,仅用于jpeg,我想要一个png。
答案 0 :(得分:0)
Bade-64只会(并且总是)使二进制表示大33%。这是因为三个八位字节分布在四个字节上,因此它们的值可以表示为可打印的ASCII字符,因此可以安全传输。
最终大小由需要编码的二进制数组决定。此外,在编码数据之前会有几个字节的uri标题。
PNG文件是无损的,并且往往比JPEG大(但并非在所有情况下)。我们预计在使用PNG文件时,我们将不得不处理独立于Base-64编码的更大文件。 PNG也有可变压缩,因为它使用gzip来压缩图像数据,但不幸的是,我们无法通过上下文方法访问它。