Preciso converter minha imagem em uma string Base64 para poder enviar minha imagem para um servidor.
Existe algum arquivo JavaScript para isso? Senão, como posso convertê-lo?
javascript
base64
Coder_sLaY
fonte
fonte
Respostas:
Você pode usar o HTML5
<canvas>
para isso:Crie uma tela, carregue sua imagem nela e use-a
toDataURL()
para obter a representação Base64 (na verdade, é umadata:
URL, mas contém a imagem codificada em Base64).fonte
toDataURL
controle sobre os retornos de chamada,done/fail/always
como é o caso do xhr?Você pode escolher entre várias abordagens:
1. Abordagem: FileReader
Carregue a imagem como blob via XMLHttpRequest e use a API FileReader para convertê-la em dataURL :
Este exemplo de código também pode ser implementado usando a API de busca WHATWG :
Essas abordagens:
Suporte do navegador:
2. Abordagem: Tela
Carregue a imagem em um objeto de imagem, pinte-a em uma tela não contaminada e converta a tela novamente em um dataURL.
Em detalhe
Formatos de entrada suportados:
image/png
,image/jpeg
,image/jpg
,image/gif
,image/bmp
,image/tiff
,image/x-icon
,image/svg+xml
,image/webp
,image/xxx
Formatos de saída suportados:
image/png
,image/jpeg
,image/webp
(Cromado)Suporte do navegador:
3. Abordagem: Imagens do sistema de arquivos local
Se você deseja converter imagens do sistema de arquivos dos usuários, precisa adotar uma abordagem diferente. Use a API FileReader :
fonte
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.
Esse snippet pode converter sua string, imagem e arquivo de vídeo em dados de string Base64.
fonte
Basicamente, se sua imagem é
então você pode convertê-lo como
fonte
<img id='Img1' src='someurl' crossorigin='anonymous'>
Aqui está o que eu fiz:
E aqui está como você o usa
fonte
Eu descobri que a maneira mais segura e confiável de fazer isso é usar
FileReader()
.Demonstração: Image to Base64
fonte
Se você tiver um objeto de arquivo, esta função simples funcionará:
Exemplo de uso:
fonte
Você pode usar o FileAPI , mas praticamente não é suportado.
fonte
Tanto quanto eu sei, uma imagem pode ser convertida em uma string Base64 por FileReader () ou armazenada no elemento canvas e, em seguida, use toDataURL () para obter a imagem. Eu tive o tipo semelhante de problema, você pode consultar isso.
Converter uma imagem em tela que já está carregada
fonte
Tente este código:
Para um evento de alteração de upload de arquivo, chame esta função:
Armazene os dados Base64 em arquivos ocultos para uso.
fonte
fonte
Bem, se você estiver usando o Dojo Toolkit , ele nos fornece uma maneira direta de codificar ou decodificar no Base64.
Tente o seguinte:
Para codificar uma matriz de bytes usando dojox.encoding.base64:
Para decodificar uma sequência codificada em Base64:
fonte