คำนำ
การเข้ารหัสขั้นพื้นฐานคือการเข้ารหัส Base64 มาตรฐานที่ใช้ในการจัดการกับข้อกำหนดทั่วไป: เนื้อหาเอาต์พุตไม่ได้เพิ่มการแบ่งบรรทัดและเนื้อหาเอาต์พุตประกอบด้วยตัวอักษรและตัวเลข
ฉันเพิ่งสร้างเทมเพลตเว็บและฉันต้องการใช้อิมเมจพื้นหลัง Base64 แม้ว่าจะมีตัวเข้ารหัสสำเร็จรูปบนเครือข่าย แต่ฉันก็ต้องการใช้งานด้วยตัวเองเสมอ หลายคนอาจไม่ทราบว่าคลาส Base64 ที่จัดเตรียมใหม่ใน JDK 8 สามารถจัดการงานนี้ได้อย่างสะดวกสบาย: Base64 (แพลตฟอร์ม Java SE 8)
1. เลือกรูปภาพก่อน
mm.png
2. สร้างเทมเพลตไฟล์ตัวอย่าง HTML
test.html
<! doctype html> <html> <head lang = "zh-cn"> <meta charset = "utf-8"> <meta http-equiv = "x-ua content =" edge = edge "> type = "text/css"> #thisimage {margin: 20px auto; -Webkit-Border-Radius: 50%; แนวชายแดน: 50%; ความเป็นมา: URL () ศูนย์กลางที่ไม่มีการทำซ้ำ; ขนาดพื้นหลัง: มี; ชายแดน: 8px Solid #ededed; ความกว้าง: 128px; ความสูง: 128px; } </style> </head> <body> <div id = "thisimage"> </div> </body> </html> โปรดทราบว่า url() ว่างเปล่าและเราจะปลูกฝังสตริงที่เข้ารหัส Base64 ที่สร้างขึ้นในภายหลัง
3. เขียนโปรแกรม Java
ที่นี่การใช้งานการเข้ารหัสและการถอดรหัส BASE64 สองทางจะดำเนินการแม้ว่าจะจำเป็นต้องมีการถอดรหัส BASE64 เท่านั้นในตัวอย่างนี้ ความคิดเห็นของโปรแกรม Java นั้นชัดเจนมากเพียงคลิกรหัส:
`base64trans.java`package com.gua;/*** สร้างโดย 2GUA ในปี 2014/10/5 * /นำเข้า java.io.ioException; นำเข้า java.nio.file.*; นำเข้า java.util.base64; นำเข้า Java.lang.system.out; * @param พา ธ พา ธ ไปยังไฟล์ภาพ * @return byte อาร์เรย์ของเนื้อหาภาพไบนารี * */ byte ส่วนตัว [] readfile (พา ธ พา ธ ) {byte [] imageContents = null; ลอง {imageContents = files.readallBytes (พา ธ ); } catch (ioexception e) {out.println ("ไฟล์การอ่านข้อผิดพลาด ... ~ zz"); } return imageContents; } /*** เข้ารหัสไฟล์รูปภาพเอาต์พุตเนื้อหาการเข้ารหัสอยู่ในรูปแบบ {@code String} * @param imageContents อาร์เรย์อาร์เรย์ของเนื้อหาไบนารี * @return {@code string} เนื้อหารูปแบบที่เข้ารหัส */ สตริงส่วนตัว base64Encoding (byte [] imageContents) {ถ้า (imageContents! = null) return base64.getencoder (). encodetOstring (imageContents); อื่นกลับโมฆะ; } /*** ถอดรหัสไฟล์ภาพ * @param imageContents สตริงรูปแบบของไฟล์รูปภาพที่จะถอดรหัส * @return เนื้อหาไบนารีของไฟล์รูปภาพที่ถอดรหัส */ ไบต์ส่วนตัว [] base64decoding (string imageContents) {ถ้า (imageContents! = null) ส่งคืน base64.getDecoder (). decode (imageContents); อื่นกลับโมฆะ; } /*** เขียนเนื้อหาไบนารีที่ถอดรหัสลงในไฟล์ * @param Path เส้นทางที่เขียนถึง * @param imageContents เนื้อหาไบนารีที่ถอดรหัส */ โมฆะส่วนตัว writefile (เส้นทางพา ธ , ไบต์ [] imageContents) {ถ้า (imageContents! = null) ลอง {files.write (พา ธ , imageContents, Standardopenoption.create); } catch (ioexception e) {out.println ("เขียนข้อผิดพลาดไฟล์ ... ~ zz"); }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {base64trans bt = ใหม่ base64trans (); string encodingString = bt.base64encoding (bt.readfile (paths.get ("d: /temp/mm.png")))); out.println ("ไฟล์รูปภาพไบนารี BASE64 รหัส:" + encodingString); bt.writefile (paths.get ("d: /temp/mm2.png"), bt.base64decoding (encodingstring)); out.println ("Task End ... "); -ผลลัพธ์ของโปรแกรมมีดังนี้:
ไฟล์ภาพไบนารี BASE64 รหัส: IVBORW0KGGOAAAAANSUHEUGAAAIAIAAAAACACACAYAAADDDPMHLAAAAAABGDBTUEAALGPC/XHBQAAACB ... 8xntiwl2vhc3lpy29ulmnul2vhc3lpy29ulmnul2nkbi1pbwcuzwfzewljb24uy24vcg5nlzewodcwlzewodcwodyucg5
4. การตั้งค่าสุดท้าย
ในการอ้างอิงเนื้อหาที่เข้ารหัส Base64 ในเทมเพลตไฟล์ html test.html มีขั้นตอนอื่นที่ต้องทำ: เพิ่มเนื้อหาต่อไปนี้ลงในจุดเริ่มต้นของเนื้อหาที่เข้ารหัส Base64: data:image/png;base64,
ผลลัพธ์สุดท้ายคล้ายกับนี้:
ข้อมูล: รูปภาพ/png; base64, ivborw0kggoaaaaansuheugaaaaaaaacacayaaadddpmhlaaaaAbgdBtUeAalgpc/XHBQAAACB ... (N Multi-character ที่นี่) 8xntiwl2vhc3lpy29ulmnul2vhc3lpy29ulmnul2nkbi1pbwcuzwfzewljb24uy24vcg5nlzewodcwlzewodcwodyucg5
หลังจากนั้นการปลูกฝังสตริงยาวนี้ลงในวงเล็บ url() ของบรรทัดของรหัสต่อไปนี้:
ความเป็นมา: URL () ศูนย์กลางที่ไม่มีการทำซ้ำ;
หากภาพอยู่ในรูปแบบ JPG โปรดเปลี่ยน PNG ใน data:image/png;base64 ด้านบนเป็น JPEG และหากเป็นรูปแบบ GIF ให้เปลี่ยนเป็น GIF ตกลงรีเฟรชหน้าและดูผลลัพธ์:
มีวงกลมเพราะเราตั้งค่าเอฟเฟกต์ CSS3
นอกจากนี้เรายังใช้การถอดรหัส BASE64 และสร้างภาพ MM2.PNG ใหม่ เปิด mm2.png ในเบราว์เซอร์รูปภาพและเอฟเฟกต์ควรจะเหมือนกับ mm.png
ในความเป็นจริงทุกครั้งที่มีการเปิดตัวเวอร์ชัน JDK ใหม่มีการอัปเดตมากมายทุกขนาดไม่ว่าคุณจะสนใจค้นพบหรือไม่ Java นั้นแข็งแกร่งและมั่นใจเสมอ
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของคุณ หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร