Привет всем! У меня есть скрипт на PHP, который умеет кодировать PNG-картинки в строку Base64. Теперь хочу сделать то же самое на JavaScript, но не знаю как.
С открытием файлов проблем нет, а вот с кодированием затык. Не привык работать с бинарными данными. Может кто-нибудь подсказать, как это сделать?
Буду благодарен за любую помощь или примеры кода. Заранее спасибо!
в js это делается довольно просто. для кодирования в base64 используй функцию btoa(), а для декодирования - atob(). например:
let encoded = btoa(‘привет мир’);
console.log(encoded); // выведет закодированную строку
let decoded = atob(encoded);
console.log(decoded); // выведет ‘привет мир’
только учти что эти функции работают только с ascii символами. для юникода нужно использовать encodeURIComponent() перед кодированием. удачи с проектом!
Для картинок можно использовать canvas. Вот как это сделать:
Создаешь canvas элемент
Рисуешь на нем изображение
Вызываешь toDataURL() у canvas
Получишь base64 строку. Удобно, что работает прямо в браузере. Можно даже настроить качество сжатия, если нужно уменьшить размер. Попробуй, должно сработать!