Мне нужно преобразовать мое изображение в строку Base64, чтобы я мог отправить свое изображение на сервер.
Есть ли файл JavaScript для этого? Иначе, как я могу преобразовать это?
javascript
base64
Coder_sLaY
источник
источник
Ответы:
Вы можете использовать HTML5
<canvas>
для этого:Создайте холст, загрузите в него свое изображение и затем используйте
toDataURL()
для получения представления Base64 (на самом деле этоdata:
URL, но оно содержит изображение в кодировке Base64).источник
toDataURL
контроль над обратными вызовами, такими какdone/fail/always
в случае с xhr?Есть несколько подходов, которые вы можете выбрать:
1. Подход: FileReader
Загрузите изображение как blob через XMLHttpRequest и используйте FileReader API, чтобы преобразовать его в dataURL :
Этот пример кода также может быть реализован с использованием API извлечения WHATWG :
Эти подходы:
Поддержка браузера:
2. Подход: холст
Загрузите изображение в Image-Object, нарисуйте его на необработанном холсте и преобразуйте холст обратно в dataURL.
В деталях
Поддерживаемые форматы ввода:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Поддерживаемые форматы вывода:
image/png
,image/jpeg
,image/webp
(Хром)Поддержка браузера:
3. Подход: изображения из локальной файловой системы
Если вы хотите конвертировать изображения из файловой системы пользователя, вам нужно использовать другой подход. Используйте API FileReader :
источник
Image from origin **** has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.
Этот фрагмент может преобразовать вашу строку, изображение и даже видео файл в строковые данные Base64.
источник
В основном, если ваше изображение
тогда вы можете преобразовать его как
источник
<img id='Img1' src='someurl' crossorigin='anonymous'>
Вот что я сделал:
А вот как вы это используете
источник
Я обнаружил, что самый безопасный и надежный способ сделать это - использовать
FileReader()
.Демо: изображение в Base64
источник
Если у вас есть файловый объект, эта простая функция будет работать:
Пример использования:
источник
Вы можете использовать FileAPI , но он практически не поддерживается.
источник
Насколько я знаю, изображение можно преобразовать в строку Base64 либо с помощью FileReader (), либо сохранить его в элементе canvas, а затем использовать toDataURL () для получения изображения. У меня была похожая проблема, вы можете сослаться на это.
Преобразовать изображение в холст, который уже загружен
источник
Попробуйте этот код:
Для события изменения загрузки файла вызовите эту функцию:
Храните данные Base64 в скрытом поле для использования.
источник
источник
Что ж, если вы используете Dojo Toolkit , это дает нам прямой способ кодировать или декодировать в Base64.
Попробуй это:
Чтобы кодировать массив байтов с помощью dojox.encoding.base64:
Чтобы декодировать строку в кодировке Base64:
источник