Préface
Le codage de base est un codage standard de base64, utilisé pour faire face aux exigences conventionnelles: le contenu de sortie n'ajoute pas de ruptures de ligne et le contenu de sortie se compose de lettres et de nombres.
J'ai récemment créé un modèle Web et je souhaite utiliser l'image d'arrière-plan Base64. Bien qu'il y ait des encodeurs prêts à l'emploi sur le réseau, je veux toujours en mettre en œuvre un seul. Beaucoup de gens peuvent ne pas savoir que la classe Base64 nouvellement fournie dans JDK 8 peut gérer cette tâche très pratique: Base64 (plate-forme Java SE 8).
1. Choisissez d'abord une image
mm.png
2. Créer un modèle de fichier de démonstration HTML
test.html
<! Doctype html> <html> <head lang = "zh-cn"> <meta charset = "utf-8"> <meta http-equiv = "x-ua-compatible" contenu = "ie = edge"> <meta name = "Viewport" contenu = "width = device-width"> <title> test Base64 ycoding- 2gua </ title> <11 type = "text / css"> #Thisimage {margin: 20px auto; -Webkit-Border-Radius: 50%; Border-Radius: 50%; Contexte: URL () Centre de centre sans répétition; taille arrière: contient; Border: 8px solide #eded; Largeur: 128px; hauteur: 128px; } </ style> </ head> <body> <div id = "thisImage"> </div> </ body> </html> Notez que url() est vide, et nous implanterons la chaîne codée Base64 générée plus tard.
3. Écrivez des programmes Java
Ici, une implémentation bidirectionnelle du codage et du décodage de base64 sera implémentée, bien que seul le décodage de base64 soit requis dans cet exemple. Les commentaires des programmes Java sont très clairs, cliquez simplement sur le code:
`Base64Trans.Java`Package Com.gua; / ** * Créé par 2GUA le 2014/10/5. * / Importer java.io.ioException; import java.nio.file. *; import java.util.base64; import static java.lang.system.out; classe publique Base64Trans {/ ** * lire le contenu à partir du fichier image. * @param chemin le chemin du fichier image. * @Return Byte Array of Binary Image Content. * * / byte privé [] readFile (chemin de chemin) {byte [] ImageContents = null; essayez {imageContents = files.ReadallBytes (path); } catch (ioException e) {out.println ("Fichier de lecture d'erreur ... ~ zz"); } return ImageContents; } / ** * Encoder les fichiers d'image, la sortie de contenu de codage est au format {@code string}. * @param ImageContents Tableau d'octet de contenu d'image binaire. * @return {@code String} Format Contenu codé. * / private String Base64Encoding (byte [] ImageContents) {if (ImageContents! = null) return Base64.GetEncoder (). EncodeToString (ImageContents); sinon retourne null; } / ** * Décoder le fichier image. * @Param ImageContents String Format du fichier image à décoder. * @return Contenu binaire du fichier image décodé. * / octet privé [] Base64Decoding (String ImageContents) {if (ImageContents! = null) return base64.getDecoder (). Decode (ImageContents); sinon retourne null; } / ** * Écrivez le contenu binaire décodé dans le fichier. * @param chemin le chemin écrit vers. * @param ImageContents Le contenu binaire décodé. * / private void writeFile (chemin de chemin, byte [] ImageContents) {if (ImageContents! = null) try {files.write (path, imageContents, standardOpenOption.create); } catch (ioException e) {out.println ("Erreur d'écriture de fichiers ... ~ zz"); }} public static void main (String [] args) {base64Trans bt = new Base64Trans (); String EncodingString = bt.Base64Encoding (bt.readfile (paths.get ("d: /temp/mm.png"))); Out.println ("Fichier d'image binaire Base64 Code:" + EncodingString); bt.writeFile (paths.get ("d: /temp/mm2.png"), bt.base64decoding (EncodingString)); out.println ("Tâche fin ..."); }}Les résultats du programme sont les suivants:
Fichier d'image binaire Base64 Code: ivborw0kggoaaaansuheugaaaiaaaaacayaaaddpmhlaaaaabgdbtueaalgpc / xhbqaaacb ... (n multi-personnage omis ici) 8xntiwl2vhc3lpy29ulmnul2vhc3lpy29ulmnul2nkbi1pbwcuzwfzewljb24uy24vcg5nzewodcwlzewodcwodododoDUCG5nplffdwaaabjrU5erkjggg == tâche fin ...
4. Réglage final
Pour référencer le contenu codé de base64 dans le modèle de fichier HTML Test.html, il y a une autre étape à faire: ajouter le contenu suivant au début du contenu codé de base64: data:image/png;base64,
Le résultat final est similaire à ceci:
Données: Image / Png; Base64, IVborw0kggoaaaansuheugaaaIAAAACACAYAAADDPMHLAAAAABGDBTUEAALGPC / XHBQAAACB ... (n multi-personnages omis ici) 8xntiwl2vhc3lpy29ulmnul2vhc3lpy29ulmnul2nkbi1pbwcuzwfzewljb24uy24vcg5nzewodcwlzewodcwodyucg5nplffdwaaabjru5erkjggg ==
Après cela, implantez cette longue chaîne dans url() de la ligne de code suivante:
Contexte: URL () Centre de centre sans répétition;
Si l'image est au format JPG, veuillez modifier la PNG dans data:image/png;base64 ci-dessus en jpeg, et s'il s'agit du format GIF, changez-le en gif. Ok, actualisez la page et voyez les résultats:
Il y a des cercles parce que nous définissons certains effets CSS3.
Nous avons également implémenté le décodage de base64 et généré une nouvelle image MM2.png. Ouvrez mm2.png dans le navigateur d'image, et l'effet doit être exactement le même que mm.png.
En fait, chaque fois que la nouvelle version JDK est publiée, il existe de nombreuses mises à jour de toutes tailles, juste si vous êtes intéressé à le découvrir. Java est toujours aussi robuste et rassurante.
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à votre étude ou à votre travail. Si vous avez des questions, vous pouvez laisser un message pour communiquer.