Base64 para Imagem
O Base64 para Imagem é uma ferramenta gratuita que converte dados de imagem codificados em Base64 novamente numa imagem.
Como é que o Base64 representa uma imagem?
O Base64 representa uma imagem convertendo os respetivos bytes binários num conjunto limitado de caracteres de texto imprimíveis. Foi criado porque alguns sistemas foram concebidos para transportar texto, e não dados binários em bruto. A codificação dos bytes facilita a sua inclusão em mensagens de email, JSON, HTML ou outros formatos baseados em texto.
O alfabeto Base64 padrão utiliza letras maiúsculas, letras minúsculas, algarismos, sinais de adição e barras. Pode surgir um sinal de igual no final como preenchimento. Normalmente, cada três bytes de entrada dão origem a quatro caracteres Base64, pelo que a forma codificada é cerca de um terço maior do que os dados originais.
Este pequeno exemplo de texto mostra claramente como funciona:
- Bytes originais interpretados como texto: Man
- Resultado em Base64: TWFu
Uma imagem passa pelo mesmo processo, mas os bytes originais descrevem um ficheiro PNG, JPEG, GIF, WebP ou outro formato de imagem, em vez de texto legível. O Base64 em bruto não indica, por si só, o tipo de imagem. Essa informação pode aparecer num URL de dados ou ser inferida a partir da assinatura do ficheiro descodificado.
Como converto Base64 novamente numa imagem?
Cola os dados da imagem em Base64 na ferramenta e envia-os para conversão. O resultado devolvido será uma imagem. Antes disso, confirma se o valor contém Base64 em bruto ou um URL de dados completo.
- Localiza o valor codificado e copia-o sem as aspas envolventes do JSON, CSS ou código-fonte.
- Procura um prefixo de URL de dados, como data:image/png;base64,. O conteúdo Base64 propriamente dito começa depois da vírgula.
- Se um URL de dados completo for rejeitado, remove o prefixo e envia apenas o conteúdo codificado, pois nem todos os descodificadores aceitam o invólucro.
- Antes de utilizares a imagem noutro local, confirma se o conteúdo, as dimensões e o formato correspondem ao esperado.
Por vezes, surgem espaços e quebras de linha quando um programa de email divide um valor Base64 comprido. Alguns descodificadores ignoram estes espaços em branco, enquanto outros, mais rigorosos, rejeitam-nos. Não acrescentes pontuação nem texto explicativo ao conteúdo. Os algarismos são caracteres Base64 válidos, mas uma sequência composta apenas por caracteres válidos não é necessariamente uma imagem.
Um valor Base64 vazio representa zero bytes e, por isso, não pode produzir uma imagem utilizável. Os valores muito longos também ocupam bastante espaço, uma vez que o Base64 aumenta o tamanho dos dados originais. Além disso, o processamento exige a transferência e descodificação de toda a sequência codificada.
Porque é que a minha imagem Base64 não é descodificada?
Normalmente, uma imagem Base64 não é descodificada porque o conteúdo está malformado ou incompleto, utiliza o alfabeto errado ou não contém bytes de imagem. Se a origem tiver aplicado a codificação mais do que uma vez, a causa também pode ser uma codificação dupla. A posição e a forma como o erro ocorre podem ajudar a identificar o problema.
- Entrada truncada. Ao copiar de registos, visualizadores de bases de dados ou sistemas de mensagens, o fim de um valor comprido pode ficar cortado. A falta de caracteres costuma deixar os bytes descodificados incompletos.
- Variante ou alfabeto incorreto. O Base64 padrão utiliza + e /, enquanto o Base64url costuma utilizar - e _. Um descodificador preparado para a outra variante pode rejeitar a entrada.
- Preenchimento em falta. Os valores Base64 podem terminar com um ou dois sinais de igual. Alguns sistemas omitem este preenchimento e certos descodificadores conseguem reconstruí-lo, mas as implementações rigorosas podem exigi-lo.
- Dados binários que não são uma imagem. O Base64 pode representar um PDF, um arquivo, um tipo de letra ou quaisquer outros bytes. Por isso, um Base64 válido não garante que os dados formem uma imagem válida.
- Confusão com a codificação de texto. Letras acentuadas, emoji e caracteres não latinos não fazem parte do alfabeto Base64. Antes da codificação em Base64, esses caracteres têm de ser representados como bytes, normalmente através de UTF-8.
- Codificação dupla. Se a primeira descodificação produzir outra sequência comprida composta apenas por caracteres Base64, a origem pode ter sido codificada duas vezes. Descodifica o valor intermédio mais uma vez apenas se a respetiva origem confirmar que esse resultado é esperado.
Se um descodificador Base64 genérico produzir conteúdo ilegível, isso não significa necessariamente que a descodificação falhou. Os bytes de uma imagem são binários e não se espera que sejam legíveis como texto. Utiliza o Decodificador Base64 quando precisares de analisar conteúdo que não seja uma imagem e o Imagem para Base64 quando quiseres realizar a operação inversa.
Onde são utilizados dados de imagem em Base64?
Os dados de imagem em Base64 são utilizados sempre que ficheiros binários precisam de passar por um campo ou documento orientado para texto. Entre os exemplos mais comuns estão imagens incorporadas em URLs de dados de HTML ou CSS, propriedades de imagem em conteúdos de APIs JSON e partes MIME de mensagens de email.
Também podem aparecer em cadeias de consulta, nas quais os analisadores de parâmetros das aplicações podem interpretar incorretamente caracteres Base64 padrão. Isto acontece sobretudo com analisadores de formulários que tratam sinais de adição como espaços ou sinais de igual como delimitadores. O Base64url substitui os caracteres problemáticos do alfabeto e omite frequentemente o preenchimento, o que o torna mais adequado para URLs e tokens.
Os nomes de domínio internacionalizados não utilizam Base64. No sistema IDNA, os rótulos ASCII permanecem inalterados, enquanto os U-labels com caracteres não ASCII podem ser representados como A-labels através de Punycode. Um valor Base64 pode aparecer noutra parte de um URL, por exemplo na cadeia de consulta. Esta distinção é importante ao diagnosticar um valor copiado da barra de endereço de um navegador.
O JSON não tem um tipo binário nativo, pelo que algumas APIs colocam o conteúdo de uma imagem Base64 dentro de uma sequência entre aspas. É uma solução prática para a troca de dados baseada em texto, mas aumenta o tamanho do conteúdo. Para carregamentos grandes ou frequentes, costuma ser mais adequado carregar o ficheiro binário de forma normal.
Codificação Base64, confidencialidade e processamento no servidor
O Base64 é uma codificação, não uma forma de encriptação, e não oferece confidencialidade. Qualquer pessoa que tenha o valor pode descodificá-lo sem palavra-passe nem chave. Por isso, credenciais, fotografias privadas e documentos confidenciais não devem ser protegidos apenas através da conversão para Base64.
Nesta ferramenta, o processamento é realizado no servidor. A entrada é enviada para o servidor através de HTTPS e não é armazenada. O HTTPS protege a ligação enquanto os dados estão em trânsito, mas não transforma o valor Base64 em conteúdo encriptado nem torna segura uma origem não fidedigna.
A descodificação também não verifica se uma imagem é inofensiva. Trata as imagens descodificadas a partir de valores Base64 recebidos de remetentes desconhecidos com o mesmo cuidado que terias com outras imagens transferidas.
Perguntas frequentes
Consigo identificar o formato da imagem a partir de Base64 em bruto?
Por vezes, mas o alfabeto Base64, por si só, não identifica o formato. Os ficheiros descodificados contêm assinaturas, muitas vezes chamadas magic bytes, que o software pode utilizar para distinguir formatos como PNG, JPEG e GIF. Um URL de dados também pode declarar um tipo de conteúdo multimédia, embora esse rótulo possa estar errado e não deva prevalecer sobre os bytes reais.
Descodificar Base64 reduz a qualidade da imagem?
Não. Uma descodificação Base64 correta repõe os bytes originais e não volta a comprimir a imagem. A qualidade, os dados de cor e os metadados incorporados permanecem inalterados, a menos que outro programa edite ou converta posteriormente o ficheiro descodificado.
O Base64 pode conter uma imagem SVG?
Sim, os dados SVG podem ser codificados em Base64, embora a compatibilidade da sua apresentação dependa do software que os recebe. O SVG é um formato baseado em XML e pode conter scripts, ligações ou referências externas. Por isso, não assumas que é seguro abrir um SVG codificado em Base64 proveniente de uma origem desconhecida.
Porque é que uma imagem Base64 é maior do que o ficheiro original?
O Base64 produz quatro caracteres de texto por cada três bytes de dados de origem, e o último bloco pode incluir preenchimento. A RFC 4648 exige preenchimento, exceto quando a especificação aplicável permite explicitamente a sua omissão. Assim, o resultado é cerca de um terço maior, antes de se acrescentar qualquer prefixo de URL de dados, aspas de JSON ou sobrecarga de transporte. Quando um sistema aceita o carregamento normal de ficheiros, enviar a imagem binária original costuma utilizar menos dados.
Ferramentas Similares
Converta sua imagem em uma string Base64 com nossa ferramenta de imagem para Base64 para codificação de dados eficiente.
Ferramentas Populares
Crie sua própria assinatura personalizada e faça o download facilmente com nossa ferramenta geradora de assinaturas para assinaturas eletrônicas personalizadas.
Calcule o tamanho de qualquer texto em Bytes (B), Kilobytes (KB) ou Megabytes (MB) usando nossa ferramenta de cálculo de tamanho de texto.
Use a ferramenta de pesquisa reversa de IP para encontrar o domínio ou host associado a qualquer endereço IP de forma rápida e fácil.
Use nossa ferramenta de ping para verificar o status e o tempo de resposta de qualquer site, servidor ou porta de forma rápida e eficiente.
A ferramenta de pesquisa de IP do Digily Link fornece informações detalhadas sobre qualquer endereço IP. Use este serviço online gratuito para obter dados abrangentes de IP.
Gere instantaneamente a sua ligação gratuita do WhatsApp com o nosso gerador de ligações do WhatsApp. Adicione uma mensagem personalizada e inicie conversas com um clique, sem iniciar sessão nem escrever código.