Prefacio
La codificación básica es una codificación estándar Base64, utilizada para lidiar con los requisitos convencionales: el contenido de salida no agrega roturas de línea y el contenido de salida consta de letras y números.
Recientemente hice una plantilla web, y quiero usar la imagen de fondo Base64. Aunque hay codificadores preparados en la red, siempre quiero implementar uno solo. Es posible que muchas personas no sepan que la clase Base64 recién proporcionada en JDK 8 puede manejar esta tarea muy convenientemente: Base64 (Java Platform SE 8).
1. Elija una imagen primero
mm.png
2. Crear plantilla de archivo de demostración HTML
test.html
<! Doctype html> <html> <head lang = "zh-cn"> <meta charset = "utf-8"> <meta http-equiv = "x-ua compatible" content = "iE = edge"> <meta name = "viewport" content = "width = width-width"> <title> testbase64 type = "text/css"> #ThisImage {margen: 20px automático; -WebKit-Border-Radius: 50%; Radio fronterizo: 50%; Antecedentes: URL () Centro de centro sin repetición; tamaño de fondo: contiene; Border: 8px Solid #eded; Ancho: 128px; Altura: 128px; } </style> </head> <body> <div id = "thatimage"> </div> </body> </html> Tenga en cuenta que url() está vacía e implantaremos la cadena codificada Base64 generada en ella más tarde.
3. Escribir programas Java
Aquí, se implementará una implementación bidireccional de la codificación y decodificación de Base64, aunque solo se requiere la decodificación de Base64 en este ejemplo. Los comentarios de los programas Java son muy claros, simplemente haga clic en el código:
`Base64trans.java`package com.gua;/*** creado por 2GUA el 2014/10/5. * /import java.io.ioException; import java.nio.file.*; import java.util.base64; import static java.lang.system.out; public class Base64trans { /***Leer contenido del archivo de imagen. * @param ruta La ruta al archivo de imagen. * @return byte matriz de contenido de imagen binaria. * */ private byte [] readfile (ruta ruta) {byte [] imageContents = null; intente {imageContents = files.readallBytes (ruta); } catch (ioException e) {out.println ("Error de lectura de archivo ... ~ zz"); } return imageContents; } /*** Codifique archivos de imagen, la salida de contenido de codificación está en formato {@code string}. * @param ImageContents Byte Matriz de contenido de imagen binaria. * @return {@code string} Formato de contenido codificado. */ private string base64Encoding (byte [] imageContents) {if (imageContents! = null) return Base64.getEncoder (). EncodetoString (imageContents); de lo contrario regresa nulo; } /*** decodifique el archivo de imagen. * @param ImageContents Formato de cadena del archivo de imagen para decodificar. * @Ceturn Contenido binario del archivo de imagen decodificado. */ private byte [] base64Decoding (string imageContents) {if (imageContents! = null) return Base64.getDecoder (). Decode (imageContents); de lo contrario regresa nulo; } /*** Escriba el contenido binario decodificado en el archivo. * @param ruta a la que se escribe la ruta. * @param imageContents el contenido binario decodificado. */ private void writeFile (ruta de ruta, byte [] imageContents) {if (imageContents! = null) try {files.write (ruta, imageContents, standingOpenOption.create); } catch (ioException e) {out.println ("Escribir el error de archivo ... ~ zz"); }} public static void main (string [] args) {base64trans bt = new Base64Trans (); String EncodingString = bt.base64Encoding (bt.readfile (raths.get ("d: /temp/mm.png")); out.println ("Código de archivo de archivos binarios Base64:" + EncodingString); Bt.WriteFile (raths.get ("d: /temp/mm2.png"), bt.base64Decoding (encodingtring)); out.println ("Task End ..."); }}Los resultados del programa son los siguientes:
Archivo de imagen binaria Base64 Código: ivborw0kggoaaaaansuheaaaaiaaaaaacacayaaaaddpmhlaaaaabgdbtueaalgpc/xhbqaaacb ... (n multi-caracteres omitido aquí 8xntiwl2vhc3lpy29ulmnul2vhc3lpy29ulmnul2nkbi1pbwcuzwfzewljb24uy24vcg5nlzzewodcwlzzzewodcwodyucg5nplffdwaaaaabjru5erkjgggg == tarea end ...
4. Configuración final
Para hacer referencia al contenido codificado Base64 en la plantilla de archivo HTML test.html, hay otro paso que hacer: Agregue el siguiente contenido al comienzo del contenido codificado de Base64: data:image/png;base64,
El resultado final es similar a este:
Datos: Imagen/Png; Base64, ivborw0kggoaaaaansuheaaaaiaaaaacacayaaaaddpmhlaaaaabgdbtueaalgpc/xhbqaaacb ... (n multi-característica omitido aquí) 8XntiWl2VHC3Lpy29ULMNUL2VHC3LPY29ULMNUL2NKBI1PBWCUZWFZEWLJB24UY24VCG5NLZZEWODCWLZZEWODCWOYUDUDUMFFDWAAAAAABJRU5ERKJGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
Después de eso, implente esta cadena larga en url() de la siguiente línea de código:
Antecedentes: URL () Centro de centro sin repetición;
Si la imagen está en formato JPG, cambie el PNG en data:image/png;base64 arriba a JPEG, y si es Formato GIF, cámbielo a GIF. Ok, actualice la página y vea los resultados:
Hay círculos porque establecemos algunos efectos CSS3.
También implementamos la decodificación de Base64 y generamos una nueva imagen mm2.png. Abra mm2.png en el navegador de imágenes, y el efecto debe ser exactamente el mismo que mm.png.
De hecho, cada vez que se lanza la nueva versión JDK, hay muchas actualizaciones de todos los tamaños, solo si está interesado en descubrirla. Java siempre es tan robusto y tranquilizador.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para su estudio o trabajo. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.