Самое забавное, что в данном случае ошибка возникает просто в ситуации перегона одного изображения в base64 строку и обратно. Где он ухитряется терять байты, ума не приложу...
Смущает :) Я предполагал, что простое решение выглядит именно так, но я видел такую функциональность и в весьма простых, бюджетных проектах, в которых к тому же работа с текстом не являлась приоритетной. Это подтолкнуло меня к мысли, что есть более простой и дешевый способ, вплоть до наличия в какой-нибудь среде стандартного компонента с таким функционалом.