JAVA中base64碼與圖片的轉(zhuǎn)換

package?cn.sanishan.util;??


import?java.io.FileInputStream;??

import?java.io.FileOutputStream;??

import?java.io.IOException;??

import?java.io.InputStream;??

import?java.io.OutputStream;??

import?java.net.HttpURLConnection;??

import?java.net.URL;??


import?sun.misc.BASE64Decoder;??

import?sun.misc.BASE64Encoder;??


/**

?*?

?*?版權(quán)所有:2016?項目名稱:ImgeBase64

?*

?*?類描述:將圖片轉(zhuǎn)化為Base64字符串?

?*?類名稱:cn.sanishan.util.Base64Img?

?*?創(chuàng)建人:

?*?創(chuàng)建時間:2016年10月27日

?*?下午3:25:49?

?*?修改人:?

?*?修改時間:2016年10月27日?下午3:25:49?

?*?修改備注:

?*?

?*?@version?V1.0

?*/??

public?class?Base64Img?{??

/**

?????*?@Title:?GetImageStrFromUrl

?????*?@Description:?TODO(將一張網(wǎng)絡(luò)圖片轉(zhuǎn)化成Base64字符串)

?????*?@param?imgURL?網(wǎng)絡(luò)資源位置

?????*?@return?Base64字符串

?????*/??

public?static?String?GetImageStrFromUrl(String?imgURL)?{??

byte[]?data?=?null;??

try?{??

//?創(chuàng)建URL??

URL?url?=new?URL(imgURL);??

//?創(chuàng)建鏈接??

????????????HttpURLConnection?conn?=?(HttpURLConnection)?url.openConnection();??

conn.setRequestMethod("GET");??

conn.setConnectTimeout(5?*?1000);??

????????????InputStream?inStream?=?conn.getInputStream();??

data?=new?byte[inStream.available()];??

????????????inStream.read(data);??

????????????inStream.close();??

}catch?(IOException?e)?{??

????????????e.printStackTrace();??

????????}??

//?對字節(jié)數(shù)組Base64編碼??

BASE64Encoder?encoder?=new?BASE64Encoder();??

//?返回Base64編碼過的字節(jié)數(shù)組字符串??

return?encoder.encode(data);??

????}??


/**

?????*?@Title:?GetImageStrFromPath

?????*?@Description:?TODO(將一張本地圖片轉(zhuǎn)化成Base64字符串)

?????*?@param?imgPath

?????*?@return

?????*/??

public?static?String?GetImageStrFromPath(String?imgPath)?{??

InputStream?in?=null;??

byte[]?data?=?null;??

//?讀取圖片字節(jié)數(shù)組??

try?{??

in?=new?FileInputStream(imgPath);??

data?=readInputStream(inStream);

????????????in.read(data);??

????????????in.close();??

}catch?(IOException?e)?{??

????????????e.printStackTrace();??

????????}??

//?對字節(jié)數(shù)組Base64編碼??

BASE64Encoder?encoder?=new?BASE64Encoder();??

//?返回Base64編碼過的字節(jié)數(shù)組字符串??

return?encoder.encode(data);??

????}??


/**

?????*?@Title:?GenerateImage

?????*?@Description:?TODO(base64字符串轉(zhuǎn)化成圖片)

?????*?@param?imgStr

?????*?@return

?????*/??

public?static?boolean?GenerateImage(String?imgStr)?{??

if?(imgStr?==?null)?//?圖像數(shù)據(jù)為空??

return?false;??

BASE64Decoder?decoder?=new?BASE64Decoder();??

try?{??

//?Base64解碼??

byte[]?b?=?decoder.decodeBuffer(imgStr);??

for?(int?i?=?0;?i?<?b.length;?++i)?{??

if?(b[i]?<?0)?{//?調(diào)整異常數(shù)據(jù)??

b[i]?+=256;??

????????????????}??

????????????}??

//?生成jpeg圖片??

String?imgFilePath?="d://222.jpg";??

OutputStream?out?=new?FileOutputStream(imgFilePath);??

????????????out.write(b);??

????????????out.flush();??

????????????out.close();??

return?true;??

}catch?(Exception?e)?{??

return?false;??

????????}??

????}??

}??


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();

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末樊销,一起剝皮案震驚了整個濱河市围苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拧揽,老刑警劉巖淤袜,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铡羡,死亡現(xiàn)場離奇詭異烦周,居然都是意外死亡论矾,警方通過查閱死者的電腦和手機杆勇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門蚜退,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人配猫,你說我怎么就攤上這事泵肄∈缫恚” “怎么了玄括?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵胃惜,是天一觀的道長哪雕。 經(jīng)常有香客問我斯嚎,道長孝扛,這世上最難降的妖魔是什么苦始? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任陌选,我火速辦了婚禮咨油,結(jié)果婚禮上役电,老公的妹妹穿的比我還像新娘。我一直安慰自己冀膝,他們只是感情好窝剖,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布脊奋。 她就那樣靜靜地躺著疙描,像睡著了一般淫痰。 火紅的嫁衣襯著肌膚如雪待错。 梳的紋絲不亂的頭發(fā)上火俄,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音谱仪,去河邊找鬼否彩。 笑死列荔,一個胖子當(dāng)著我的面吹牛贴浙,可吹牛的內(nèi)容都是我干的崎溃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朵逝!你這毒婦竟也來了配名?” 一聲冷哼從身側(cè)響起晋辆,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎霸饲,沒想到半個月后厚脉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霞溪,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡鸯匹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年臂容,在試婚紗的時候發(fā)現(xiàn)自己被綠了脓杉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球散。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凌净,死狀恐怖冰寻,靈堂內(nèi)的尸體忽然破棺而出斩芭,到底是詐尸還是另有隱情划乖,我是刑警寧澤琴庵,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布儿礼,位于F島的核電站翰苫,受9級特大地震影響奏窑,放射性物質(zhì)發(fā)生泄漏埃唯。R本人自食惡果不足惜墨叛,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谨朝。 院中可真熱鬧字币,春花似錦悔耘、人聲如沸澄峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烦秩,卻和暖如春只祠,著一層夾襖步出監(jiān)牢的瞬間抛寝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爷绘,地道東北人购对。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓楷扬,卻偏偏與公主長得像烘苹,于是被迫代替她去往敵國和親霜定。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法吆视,類相關(guān)的語法搔弄,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法擎宝,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • 初學(xué)Java郁妈,一直搞不懂java里面的io關(guān)系,在網(wǎng)上找了很多大多都是給個結(jié)構(gòu)圖草草描述也看的不是很懂绍申。而且沒有結(jié)...
    賭書只道是尋常閱讀 412評論 1 2
  • 一噩咪、基礎(chǔ)知識:1顾彰、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,378評論 0 4
  • 經(jīng)常有朋友在微信里發(fā)來信息,就兩個字仆百,“在嗎厕隧?” 如果你是一個惜字如金的人,或者是在時間非常緊迫的情況下發(fā)來的俄周,那...
    陳伯正閱讀 613評論 0 1