1. 程式人生 > >將image圖片轉化為Base64字串

將image圖片轉化為Base64字串

base64工具類:

/**
 * Base64 工具類
 */
public class Base64Util {
    private static final char last2byte = (char) Integer.parseInt("00000011", 2);
    private static final char last4byte = (char) Integer.parseInt("00001111", 2);
    private static final char last6byte = (char) Integer.parseInt("00111111", 2);
    private static final char lead6byte = (char) Integer.parseInt("11111100", 2);
    private static final char lead4byte = (char) Integer.parseInt("11110000", 2);
    private static final char lead2byte = (char) Integer.parseInt("11000000", 2);
    private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};


    public Base64Util() {
    }


    public static String encode(byte[] from) {
        StringBuilder to = new StringBuilder((int) ((double) from.length * 1.34D) + 3);
        int num = 0;
        char currentByte = 0;


        int i;
        for (i = 0; i < from.length; ++i) {
            for (num %= 8; num < 8; num += 6) {
                switch (num) {
                    case 0:
                        currentByte = (char) (from[i] & lead6byte);
                        currentByte = (char) (currentByte >>> 2);
                    case 1:
                    case 3:
                    case 5:
                    default:
                        break;
                    case 2:
                        currentByte = (char) (from[i] & last6byte);
                        break;
                    case 4:
                        currentByte = (char) (from[i] & last4byte);
                        currentByte = (char) (currentByte << 2);
                        if (i + 1 < from.length) {
                            currentByte = (char) (currentByte | (from[i + 1] & lead2byte) >>> 6);
                        }
                        break;
                    case 6:
                        currentByte = (char) (from[i] & last2byte);
                        currentByte = (char) (currentByte << 4);
                        if (i + 1 < from.length) {
                            currentByte = (char) (currentByte | (from[i + 1] & lead4byte) >>> 4);
                        }
                }


                to.append(encodeTable[currentByte]);
            }
        }


        if (to.length() % 4 != 0) {
            for (i = 4 - to.length() % 4; i > 0; --i) {
                to.append("=");
            }
        }


        return to.toString();
    }
}

圖片轉byte工具類

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;


/**
 * 檔案讀取工具類
 */
public class FileUtil {


    /**
     * 讀取檔案內容,作為字串返回
     */
    public static String readFileAsString(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            throw new FileNotFoundException(filePath);
        } 


        if (file.length() > 1024 * 1024 * 1024) {
            throw new IOException("File is too large");
        } 


        StringBuilder sb = new StringBuilder((int) (file.length()));
        // 建立位元組輸入流  
        FileInputStream fis = new FileInputStream(filePath);  
        // 建立一個長度為10240的Buffer
        byte[] bbuf = new byte[10240];  
        // 用於儲存實際讀取的位元組數  
        int hasRead = 0;  
        while ( (hasRead = fis.read(bbuf)) > 0 ) {  
            sb.append(new String(bbuf, 0, hasRead));  
        }  
        fis.close();  
        return sb.toString();
    }


    /**
     * 根據檔案路徑讀取byte[] 陣列
     */
    public static byte[] readFileByBytes(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            throw new FileNotFoundException(filePath);
        } else {
            ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length());
            BufferedInputStream in = null;


            try {
                in = new BufferedInputStream(new FileInputStream(file));
                short bufSize = 1024;
                byte[] buffer = new byte[bufSize];
                int len1;
                while (-1 != (len1 = in.read(buffer, 0, bufSize))) {
                    bos.write(buffer, 0, len1);
                }


                byte[] var7 = bos.toByteArray();
                return var7;
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException var14) {
                    var14.printStackTrace();
                }


                bos.close();
            }
        }
    }
    
    /**  
     * 根據地址獲得資料的位元組流  
     * @param strUrl 網路連線地址  
     * @return  
     */    
    public static byte[] getImageFromNetByUrl(String strUrl){    
        try {    
            URL url = new URL(strUrl);    
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
            conn.setRequestMethod("GET");    
            conn.setConnectTimeout(5 * 1000);    
            InputStream inStream = conn.getInputStream();//通過輸入流獲取圖片資料    
            byte[] btImg = readInputStream(inStream);//得到圖片的二進位制資料    
            return btImg;    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
        return null;    
    }  
    
    /**  
     * 從輸入流中獲取資料  
     * @param inStream 輸入流  
     * @return  
     * @throws Exception  
     */    
    public static byte[] readInputStream(InputStream inStream) throws Exception{    
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();    
        byte[] buffer = new byte[1024];    
        int len = 0;    
        while( (len=inStream.read(buffer)) != -1 ){    
            outStream.write(buffer, 0, len);    
        }    
        inStream.close();    
        return outStream.toByteArray();    
    }    
    
}

呼叫方法轉化,返回base64字串:

byte[] imgData = FileUtil.getImageFromNetByUrl(filePath);

 String imgStr = Base64Util.encode(imgData);

上述是網路請求下的圖片轉base64

本地圖片轉base64的方法:

byte[] imgData = FileUtil.readFileByBytes(filePath);

 String imgStr = Base64Util.encode(imgData);

若有疑問諮詢QQ:1147726728

相關推薦

image圖片化為Base64字串

base64工具類:/** * Base64 工具類 */public class Base64Util {    private static final char last2byte = (char) Integer.parseInt("00000011", 2);   

java圖片化為base64base64轉化為圖片編碼並儲存在本地

直接上程式碼public class Base64Convert {    /**     * @Description: 圖片轉化成base64字串     * @param:    path     * @Return:     */    public static S

圖片化成base64字串

package demo; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; public class BASE64DecoderUtil { public static void

使用Java註解實體類化為sql字串

首先是定義一個實體類,如下 /* * 定義使用者,通過註解對映到資料庫 */ @Table("user") public class User { @Column("id") private int id; @Column("username") privat

圖片化成base64字串 && base64字串轉化成圖片

// 圖片轉化成base64字串 public static String GetImageStr(String imgUrl) {// 將圖片檔案轉化為位元組陣列字串,並對其進行Base64編碼處理 // String imgFile = "C:/Users/Sta

JavaScript——圖片化為base64編碼

var img = "imgurl";//imgurl 就是你的圖片路徑 function getBase64Image(img) { var canvas = document.createEl

php把網路圖片化為base64格式,解決html2canvas圖片跨域問題

一、前言       最近在用html2canvas做網頁截圖功能。這個開源庫使用很簡單,程式碼也很方便,但難點在於跨域問題。比如說,我的一個頁面中有圖片也有文字,圖片是來自於圖片伺服器的網路圖片。此時我們要生成截圖的話,需要有許可權來操作網路圖片,這就出現了

遠端image圖片base64編碼

最近在開發微信網頁專案上遇到一個小問題,canvas生成海報需要用到一張圖片,而這張圖片剛好是別的域名。為此function getBase64Image(img) { var canvas = document.createElement("canvas");

php 圖片base64

function gif php pos 內置 獲取 str 路徑 files PHP對Base64的支持非常好,有內置的base64_encode與base64_decode負責圖片的Base64編碼與解碼。 編碼上,只要將圖片流讀取到,而後使用base6

Android 本地圖片轉換為Base64加密字串及根據加密串反向生成圖片

一.需求場景     某些時候,我們要傳遞圖片到伺服器端,那麼是走IO還是直接將二進位制資料流通過Base64轉碼加密後變更為字串傳遞給伺服器呢?其實兩種方式均可實現功能,而對於容量比較小的圖片,如在2MB以內的圖片來說,採用Base64加密字串傳遞的方式

javapdfbase64字串base64字串反轉pdf

package cn.wonders.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.ByteArrayInp

Jav檔案壓縮-InputStream化為base64-Base64解碼並生成圖片

 Jav檔案壓縮-InputStream轉化為base64-Base64解碼並生成圖片   直接上原始碼,解釋見文章尾部 1 package com.hs.common.util.imgecode; 2 3 import com.hs.common.util.Lo

canvas圖片base64格式 以及 驗證圖片是否透明

alpha spa bsp draw targe canvas 地址 hab mage logoImgUpload:function(file) { let self = this; self.formatUpload(file);

CAFFE之圖片化為lmdb格式指令碼【直接執行版】(內含生成train.txt和test.txt)

標籤: caffe 深度學習 作者:賈金讓 一.指令碼實現的功能 1.將訓練資料集轉化為lmdb格式; 2.將測試資料集轉化為lmdb格式; 3.生成mean.binaryproto檔案。 二.原理簡述 對於使用caffe的人來說,預處

caffe-圖片化為siamese網路需要的資料庫格式

// This program converts a set of gray images to a leveldb by storing them // as Datum proto buffers. // Usage: // convert_imageset [FLAGS] ROOTFOLDER/ L

圖片base64 繫結在img src屬性裡

Image img = GetImage(); //假設你得到了一張圖片img MemoryStream mstream = new MemoryStream(); img.Save(mstre

使用filereadimg化為base64

作為一個小白,最近看到了關於使用將圖片轉化為base64的文章,學了下,覺得不錯,就記下來了 首先,我們可以使用萬能的canvas,但是由於我不怎麼喜歡canvas(效能消耗過大),所以我選擇使用filerader來將我們的圖片轉化為base64格式並且顯示出來 首先得

C#照片或圖片化為byte[]存入資料庫,從資料庫中讀照片

publicstaticbyte[] GetBytesByImagePath(string strFile) {byte[] photo_byte =null;using (FileStream fs =new FileStream(strFile, FileMode.Open, FileAcc

使用GsonList()化為json字串

做這個功能的話需要一個java Bean,用於往list裡面新增資料,然後就是使用Gson的gson.toJson(list);方法進行轉化成json資料,下面是程式碼 Gson gson = new Gson(); List<Bean> list = new ArrayList<Bean&

matlab實現一次性實現多個文件夾圖片化為.mat文件

img mage 標簽 rgb end 參考 strcmp microsoft rcm %這裏是主函數:命名為readImg.m; clc;clear; %---read_image; filepath = ‘G:\人臉重建\data\src_all\‘;%圖片路徑可以根