Base64 всегда кодирует исходное сообщение в сообщение длиной, кратной 4, дополняя знаками "=".
Пример на языке Ruby, в режиме интерпретатора в командной строке:
irb(main):020:0> Base64.strict_encode64 'a'
=> "YQ=="
irb(main):021:0> Base64.strict_encode64 'ab'
=> "YWI="
irb(main):022:0> Base64.strict_encode64 'abc'
=> "YWJj"
irb(main):023:0> Base64.strict_encode64 'abcd'
=> "YWJjZA=="
irb(main):024:0> Base64.strict_encode64 'abcde'
=> "YWJjZGU="
irb(main):025:0> Base64.strict_encode64 'abcdef'
=> "YWJjZGVm"
Изображение, закодированное с Base64, раскодируется при помощи буфера, скажем, 16КБ.
В этот буфер нужно поместить данные размером, кратным 4 (при этом, храня истинный размер в отдельной переменной). Декодировал буфер - записывай результат куда нужно (будет содержать бинарные данные изображения) - приступай к чтению следующего куска, и так до конца "простыни".
Так код не будет пожирать много памяти и будет обрабатывать данные поочередно.