toDataURL() увеличение размера файла
Когда я загружаю определенный файл в своем браузере, файл имеет тип jpeg, а размер файла составляет 2 МБ, но когда я кодирую свой файл в base64, используя canvas.toDataURL()
Размер полученного файла составляет около 9 МБ.
Почему файл в кодировке base64 в 3-4 раза больше исходного файла?
Я видел, что я могу указать опцию для toDataURl(type, quality)
, но я не могу использовать его для файла PNG, просто для JPEG, и я хочу PNG.
1 ответ
Bade-64 только (и всегда) сделает двоичное представление на 33% больше. Это связано с тем, что три октета размещаются на четырех байтах, поэтому их значение может быть представлено в виде печатных символов ASCII и, следовательно, является безопасным при транспортировке.
Окончательный размер определяется двоичным массивом, который необходимо кодировать. Кроме того, будет добавлен URI-заголовок из нескольких байтов, предшествующий закодированным данным.
Файлы PNG без потерь и имеют тенденцию быть больше, чем JPEG (хотя не во всех случаях). Ожидается, что нам придется иметь дело с большими файлами независимо от кодировки Base-64, которая следует, когда мы используем файлы PNG. PNG также имеет переменное сжатие, так как использует gzip для сжатия данных изображения, но, к сожалению, у нас нет доступа к этому через метод контекста.