Kata pengantar
Pengkodean dasar adalah pengkodean basis64 standar, yang digunakan untuk menangani persyaratan konvensional: Konten output tidak menambahkan jeda garis, dan konten output terdiri dari huruf dan angka.
Saya baru -baru ini membuat template web, dan saya ingin menggunakan gambar latar belakang base64. Meskipun ada encoder siap pakai di jaringan, saya selalu ingin mengimplementasikannya sendiri. Banyak orang mungkin tidak tahu bahwa kelas Base64 yang baru disediakan di JDK 8 dapat menangani tugas ini dengan sangat nyaman: Base64 (Platform Java SE 8).
1. Pilih gambar terlebih dahulu
mm.png
2. Buat template file demo 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=device-width"> <title>Test Base64 encoding- 2gua</title> <style type = "text/css"> #ThisImage {margin: 20px auto; -webkit-border-radius: 50%; Border-Radius: 50%; Latar Belakang: URL () Pusat Pusat No-Repeat; Ukuran latar belakang: berisi; Perbatasan: 8px solid #ededed; Lebar: 128px; Tinggi: 128px; } </tyle> </head> <body> <v id = "thisimage"> </div> </body> </html> Perhatikan bahwa url() kosong, dan kami akan menanamkan string yang dikodekan base64 yang dihasilkan ke dalamnya nanti.
3. Tulis program java
Di sini, implementasi dua arah dari pengkodean dan decoding base64 akan diimplementasikan, meskipun hanya decoding base64 yang diperlukan dalam contoh ini. Komentar program Java sangat jelas, cukup klik kode:
`Base64trans.java`package com.gua;/*** dibuat oleh 2Gua pada 2014/10/5. * /impor java.io.ioException; import java.nio.file.*; impor java.util.base64; impor statis java.lang.system.out; basis kelas publik64trans { /***Baca konten dari file gambar. * @param path jalur ke file gambar. * @return byte array konten gambar biner. * */ byte pribadi [] readFile (path path) {byte [] imagecontents = null; coba {imagecontents = file.readallbytes (path); } catch (ioException e) {out.println ("File membaca kesalahan ... ~ zz"); } return ImageContents; } /*** Encode file gambar, output konten pengkodean ada di format {@code string}. * @param imagecontents byte array konten gambar biner. * @return {@code string} format konten yang dikodekan. */ string private base64Encoding (byte [] imagecontents) {if (imagecontents! = null) return base64.getencoder (). encodeToString (imagecontents); lagi kembali nol; } /*** Decode file gambar. * Format string @param imagecontents dari file gambar yang akan diterjemahkan. * @Return konten biner dari file gambar yang diterjemahkan. */ byte private [] base64decoding (string imagecontents) {if (imagecontents! = null) return base64.getDecoder (). decode (imagecontents); lagi kembali nol; } /*** Tulis konten biner yang diterjemahkan ke dalam file. * @param Path jalan yang ditulis. * @param Imagecontents Konten biner yang diterjemahkan. */ private void writeFile (path path, byte [] imagecontents) {if (imagecontents! = null) coba {file.write (path, imagecontents, standardopenoption.create); } catch (ioException e) {out.println ("Tulis kesalahan file ... ~ zz"); }} public static void main (string [] args) {base64trans bt = base64trans baru (); String encodingstring = bt.base64Encoding (bt.readfile (paths.get ("d: /temp/mm.png"))); out.println ("Kode File Binary Gambar Base64:" + Encodingstring); bt.writefile (paths.get ("d: /temp/mm2.png"), bt.base64decoding (encodingstring)); out.println ("Tugas Akhir ..."); }}Hasil program adalah sebagai berikut:
File Binary File Base64 Kode: ivborw0kggoaaaansuheugaaiaiaaAcAcayaaAddpmhlaaaaabgdbtueAalgpc/xhbqaaacb ... (n multi-karakter dihilangkan di sini) 8xNTIwL2Vhc3lpY29uLmNuL2Vhc3lpY29uLmNuL2Nkbi1pbWcuZWFzeWljb24uY24vcG5nLzEwODcwLzEwODcwODYucG5nPLffdwAAAABJRU5ErkJggg==Task end...
4. Pengaturan terakhir
Untuk referensi konten yang dikodekan base64 dalam html file template test.html, ada langkah lain yang harus dilakukan: tambahkan konten berikut ke awal konten yang dikodekan base64: data:image/png;base64,
Hasil akhirnya mirip dengan ini:
Data: gambar/png; base64, ivborw0kggoaaaansuheugaaaiaiaAcAcayaaAddpmhlaaaaabgdbtuaalgpc/xhbqaaaCb ... (n multi-karakter dihilangkan di sini) 8xntiwl2vhc3lpy29ulMnul2vhc3lpy29ulMnul2nkbi1pbwcuzwfzewljb24Uy24vcg5nlzewodcwlzewodcwodyucg5nplffdwaaaAbjruererkggggGggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggorerucg5.
Setelah itu, implan string panjang ini ke dalam braket url() dari baris kode berikut:
Latar Belakang: URL () Pusat Pusat No-Repeat;
Jika gambar dalam format JPG, silakan ubah PNG dalam data:image/png;base64 di atas menjadi JPEG, dan jika itu format GIF, ubah menjadi GIF. Oke, segarkan halaman dan lihat hasilnya:
Ada lingkaran karena kami menetapkan beberapa efek CSS3.
Kami juga menerapkan decoding Base64 dan menghasilkan gambar MM2.PNG baru. Buka mm2.png di browser gambar, dan efeknya harus persis sama dengan mm.png.
Bahkan, setiap kali versi JDK baru dirilis, ada banyak pembaruan dari semua ukuran, hanya apakah Anda tertarik untuk menemukannya. Java selalu sangat kuat dan meyakinkan.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini akan membantu studi atau pekerjaan Anda. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.