конвертировать изображение в base64 и проверить размер - PullRequest
4 голосов
/ 03 февраля 2011

Я использую следующий код c # для преобразования файла изображения в строку base64

using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
        {
            var buffer = new byte[fs.Length];
            fs.Read(buffer, 0, (int)fs.Length);
            var base64 = Convert.ToBase64String(buffer);
        }

Как проверить размер до и после?то есть.размер файла изображения и размер базовой строки 64.Я хочу проверить, выигрываю я или проигрываю, конвертируя его.

Ответы [ 2 ]

7 голосов
/ 03 февраля 2011

Вы можете рассчитать это с помощью простой математики. Один символ base64 представляет 6 битов, и поэтому четыре символа представляют три байта. Таким образом, вы получаете 3/4 байта на символ. Который дает:

int base64EncodedSize = 4 * originalSizeInBytes / 3;

В зависимости от того, как дополнены данные, они могут быть отключены символом или двумя, но это не должно иметь значения.

Кроме того, если вы подозреваете, что base64 может быть более эффективным, с чем вы его сравниваете? По сравнению с необработанным двоичным файлом размер всегда увеличивается на 33%.

0 голосов
/ 03 февраля 2011

Вы проигрываете - строка base64 будет хранить больше байтов, чем ваше исходное изображение. Возможно, много больше, если все это в памяти: строки в .Net являются Unicode, поэтому они используют в два раза больше байтов, чем ASCII-кодированная строка.

...