Prefácio
A codificação básica é uma codificação Base64 padrão, usada para lidar com os requisitos convencionais: o conteúdo de saída não adiciona quebras de linha e o conteúdo de saída consiste em letras e números.
Recentemente, fiz um modelo da Web e quero usar a imagem de fundo Base64. Embora existam codificadores prontos na rede, eu sempre quero implementar um sozinho. Muitas pessoas podem não saber que a classe Base64 recém -fornecida no JDK 8 pode lidar com esta tarefa de maneira muito conveniente: Base64 (Java Platform SE 8).
1. Escolha uma imagem primeiro
mm.png
2. Crie modelo de arquivo de demonstração HTML
test.html
<! Doctype html> <html> <head lang = "zh-cn"> <meta charset = "utf-8"> <meta http-equiv = "x-ua-compatível" content = "ie = Edge"> <meta name = "viewport" = "width-a-width"> type = "text/css"> #Thisimage {margin: 20px Auto; -Webkit-Border-Radius: 50%; Radio de fronteira: 50%; Antecedentes: URL () Center Center sem repetição; tamanho de fundo: contém; Fronteira: 8px sólido #ededed; Largura: 128px; Altura: 128px; } </style> </head> <body> <div id = "thisImage"> </div> </body> </html> Observe que url() está vazio e implantaremos a sequência codificada Base64 gerada para ela mais tarde.
3. Escreva programas Java
Aqui, será implementada uma implementação bidirecional da codificação e decodificação base64, embora apenas a decodificação base64 seja necessária neste exemplo. Os comentários dos programas Java são muito claros, basta clicar no código:
`Base64trans.java`package com.gua;/*** Criado por 2GuA em 2014/10/5. * /importar java.io.ioException; importar java.nio.file.*; importar java.util.base64; importar java estático.lang.system.out; public class base64trans { /***lê o conteúdo do arquivo de imagem. * @param Path o caminho para o arquivo de imagem. * @return byte matriz de conteúdo de imagem binária. * */ private byte [] readfile (caminho do caminho) {byte [] imageContents = null; tente {imageContents = files.readallbytes (caminho); } catch (ioexception e) {out.println ("Arquivo de leitura de erro ... ~ zz"); } retornar imageContents; } /*** codificar arquivos de imagem, a saída de conteúdo de codificação está no formato {@code string}. * @param imageContents byte matriz de conteúdo de imagem binária. * @return {@code string} Formato Conteúdo codificado. */ private String base64Encoding (byte [] imageContents) {if (imageContents! = null) retornar base64.getEncoder (). codetoString (imageContents); mais retornar nulo; } /*** decodifique o arquivo de imagem. * @param imageContents String formato do arquivo de imagem a ser decodificado. * @return Conteúdo binário do arquivo de imagem decodificado. */ byte privado [] base64decoding (string imageContents) {if (imageContents! = null) retorna base64.getDecoder (). decodge (imageContents); mais retornar nulo; } /*** Escreva o conteúdo binário decodificado no arquivo. * @param caminho do caminho escrito. * @param imageContents O conteúdo binário decodificado. */ private void writefile (caminho do caminho, byte [] imageContents) {if (imageContents! = null) tente {files.write (path, imageContents, standardoPenOption.create); } catch (ioexception e) {out.println ("Erro de arquivo de gravação ... ~ zz"); }} public static void main (string [] args) {base64trans bt = new base64Trans (); String codingsTring = bt.base64Encoding (bt.readfile (paths.get ("d: /temp/mm.png"))); out.println ("Arquivo de imagem binário Código64 Código:" + EncodingsTring); Bt.WriteFile (Paths.get ("d: /temp/mm2.png"), Bt.Base64Decoding (EncodingsTring)); out.println ("Tarefa final ..."); }}Os resultados do programa são os seguintes:
Base de arquivo binário Base64 Código: IVBORW0KGGOAAAANSUHEUGAAAIAAAACACAYAAADDPMHLAAAAABGDBTUEAALGPC/XHBQAAACB ... (n Multi-Character omitido aqui) 8xNTIwL2Vhc3lpY29uLmNuL2Vhc3lpY29uLmNuL2Nkbi1pbWcuZWFzeWljb24uY24vcG5nLzEwODcwLzEwODcwODYucG5nPLffdwAAAABJRU5ErkJggg==Task end...
4. Configuração final
Para referência de conteúdo codificado por Base64 no modelo de arquivo HTML Test.html, há outro passo a fazer: Adicione o seguinte conteúdo ao início do Conteúdo codificado de Base64: data:image/png;base64,
O resultado final é semelhante a este:
Dados: Image/Png; Base64, IVBORW0KGGOAAAANSUHEUGAAAIAIAAACACAAAAADDPMHLAAAAABGDBTUEAALGPC/XHBQAAACB ... (n (n Multi-Character omitido aqui) 8xNTIwL2Vhc3lpY29uLmNuL2Vhc3lpY29uLmNuL2Nkbi1pbWcuZWFzeWljb24uY24vcG5nLzEwODcwLzEwODcwODYucG5nPLffdwAAAABJRU5ErkJggg==
Depois disso, implante essa longa sequência nos colchetes url() da seguinte linha de código:
Antecedentes: URL () Center Center sem repetição;
Se a imagem estiver no formato JPG, altere o PNG nos data:image/png;base64 acima para JPEG e, se for o formato GIF, altere -o para GIF. OK, refresque a página e veja os resultados:
Existem círculos porque definimos alguns efeitos CSS3.
Também implementamos a decodificação BASE64 e geramos uma nova imagem MM2.png. Open MM2.png no navegador de imagem, e o efeito deve ser exatamente o mesmo que mm.png.
De fato, toda vez que a nova versão do JDK é lançada, há muitas atualizações de todos os tamanhos, apenas se você está interessado em descobri -la. Java é sempre tão robusto e tranquilizador.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja de ajuda para o seu estudo ou trabalho. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.