Дорогой дневник!
Сегодня я узнала интересную вещь о кодировании двоичных данных.
С утра произошло страшное: я открыла картинку в текстовом редакторе =)
Не спрашивайте, как так получилось %-) неделя была бешеная :-(
Как я разумею, внутри моей картинки встречаются любые байты со значениями от 0 до 255. А это не всегда буквы и цифры, это ещё и всякие "управляющие и служебные символы" (что бы это ни значило). Которые в текстовом редакторе не отображаются. Потому что это не текст (спасибо, кэп).
И вот, читая Википедию, я обнаружила интересное :) Оказывается, когда двоичные данные передаются, например, в электронном письме или внедряются в html-страничку, они кодируются в читаемом виде. Без "управляющих и служебных символов". А стандарт кодирования называется Base64.
В этом стандарте используются только 64 читаемых символа. И еще символ "=" в качестве специального кода суффикса (что бы это ни значило):
0 – 25 — буквы верхнего регистра (A–Z)
26 – 51 — буквы нижнего регистра (a–z)
52 – 61 — цифры 0–9
62 – 63 — специальные символы («+» и «/»)
Таким образом можно закодировать любые двоичные данные. И передать их хоть в бумажном письме =) Буквы и цифры писать проще, чем биты и байты %-)
Даже есть специальные сайты-кодировщики!
Например, https://snipp.ru/tools/base64-img
Тысячи их =)
Например, я могу закодировать маленькую картинку в base64. И передать кому-нибудь =) И даже если сайт не поддерживает загрузку изображений, а только текстовые сообщения, мой текст можно будет снова преобразовать в картинку =)
Можно и обычный текст кодировать в base64 =) Например, вот:
0JIg0Y/QvdCy0LDRgNC1INC/0L7QutCwINC90LUg0LHRi9C70L4g0LTQvtC90LDRgtC+0LI=
Можно начинать писать тайные записки друг другу =) и всякую запрещёнку =) Роскомнадзор не сразу поймёт, чем мы тут занимаемся =)
Вот такие дела, дорогой дневник. С любовью, твоя Ксеня.
Проблема такой кодировки в избыточном количестве символов. Если взять простую картинку 800х600 пикселей, то после кодировки там получится несколько страниц А4 текста. Те же снежинки в шапке, хоть и были векторными, тоже были закодированы, и к стилевому файлу добавляли немало веса.
Я три дня гналась за вами, чтобы сказать, как вы мне безразличны =)
Пришлось задействовать всех, кого знаю %-) Мне сказали, «ты **анулась, на**я тебе это?» (простите)
Действительно, несколько страниц А4
Но котик 800x600 всё-таки влез в комментарий на Пипке =) :-P
Сама не знаю, зачем я это делаю =)
Оригинальный котик (был размером 45 386 байт, файл расширился из-за кодировщика на пипмай-сервере):
Использовалось:
https://riot-optimizer.com
https://www.base64-image.de
https://imagecompresser.com/base64-to-image
Оригинальное изображение имеет сжатие, в base64, скорее всего, сжатия нет.
Ой, я сама пока не очень разобралась =)
В приложенном base64 закодирован файл в формате webp с разрешением 800x600 =)
Base64 переформатирует шестибитные группы в восьмибитные.
Если бы сжатие не сохранялось, то полноцветная картинка 800x600 была бы размером в полтора мегабайта. А она была размером 45 килобайт. В base64 она выросла на треть до 60 килобайт. У пипмая есть ограничение на длину комментария =) больше бы сюда не влезало.
Где дневник за 25ое? у меня ломка
Я почти забыла, но успела =)
Почему 64 символа? Потому что данные берутся по 6 бит, и 6 единичек дают 63 значений + 0. И знаками равно вроде как заполняются пустоты, если на 6 не делится общий объем