最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法

 更新時(shí)間:2018年09月16日 17:39:24   作者:正在戰(zhàn)斗中  
這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本例子的目的在于測(cè)試往oracle數(shù)據(jù)庫(kù)中插入blob字段

public static String getImgStr(String imgFile){
  //將圖片文件轉(zhuǎn)化為字節(jié)數(shù)組字符串,并對(duì)其進(jìn)行Base64編碼處理
  
  InputStream in = null;
  byte[] data = null;
  //讀取圖片字節(jié)數(shù)組
  try
  {
   in = new FileInputStream(imgFile);  
   data = new byte[in.available()];
   in.read(data);
   in.close();
  }
  catch (IOException e)
  {
   e.printStackTrace();
  }
  return new String(Base64.encodeBase64(data));
 }

--

利用以上的思路寫(xiě)的一個(gè)測(cè)試

public class ReadImageTest {
 public static void main(String[] args) throws IOException {
   FileInputStream fis = new FileInputStream(new File("C:\\Users\\luzhifei\\Pictures\\hc_logo.png"));   
   String picStr="";
   byte[] read = null;
   int len = 0;
   read= new byte[fis.available()];
   fis.read(read);
   String baseStr= Base64.getEncoder().encodeToString(read);
   //System.out.println( baseStr);
   byte[] op= Base64.getDecoder().decode(baseStr);
   // System.out.println(new String(op));
   FileOutputStream fos = new FileOutputStream(new File("d:\\temp\\1.jpg"));
   fos.write(op,0,op.length );
   fos.flush();
   fos.close();
 }
}

但是available()有一定的限制。

為了穩(wěn)妥,嚴(yán)重建議采取以下方式:

public static void imageToBase64Str() throws IOException{
   FileInputStream fis = new FileInputStream(new File("C:\\Users\\luzhifei\\Pictures\\hc_logo.png"));
   byte[] read = new byte[1024];
   int len = 0;
   List<byte[]> blist=new ArrayList<byte[]>();
   int ttllen=0;
   while((len = fis.read(read))!= -1){
    byte[] dst=new byte[len];
    System.arraycopy(read, 0, dst, 0, len);
    ttllen+=len;
    blist.add(dst);
   }
   fis.close();
   byte[] dstByte=new byte[ttllen];
   int pos=0;
   for (int i=0;i<blist.size();i++){
    if (i==0){
     pos=0;
    }
    else{
    pos+=blist.get(i-1).length; 
    }
    System.arraycopy(blist.get(i), 0, dstByte, pos, blist.get(i).length);
   }
   String baseStr= Base64.getEncoder().encodeToString(dstByte);
   byte[] op= Base64.getDecoder().decode(baseStr);
   FileOutputStream fos = new FileOutputStream(new File("d:\\temp\\2.jpg"));
   fos.write(op,0,op.length );
   fos.flush();
   fos.close();
 }

總結(jié)

以上所述是小編給大家介紹的java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • Java將一個(gè)正整數(shù)分解質(zhì)因數(shù)的代碼

    Java將一個(gè)正整數(shù)分解質(zhì)因數(shù)的代碼

    這篇文章主要介紹了將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5,需要的朋友可以參考下
    2017-02-02
  • Java 函數(shù)式編程要點(diǎn)總結(jié)

    Java 函數(shù)式編程要點(diǎn)總結(jié)

    函數(shù)式編程并不是Java新提出的概念,其與指令編程相比,強(qiáng)調(diào)函數(shù)的計(jì)算比指令的計(jì)算更重要;與過(guò)程化編程相比,其中函數(shù)的計(jì)算可以隨時(shí)調(diào)用。Java8新引入函數(shù)式編程方式,大大的提高了編碼效率。本文將對(duì)涉及的對(duì)象等進(jìn)行統(tǒng)一的學(xué)習(xí)及記錄。
    2021-06-06
  • 一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟

    一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,下面這篇文章主要給大家介紹了一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • SpringMVC 如何使用注解完成登錄攔截

    SpringMVC 如何使用注解完成登錄攔截

    這篇文章主要介紹了SpringMVC 如何使用注解完成登錄攔截,幫助大家更好的理解和學(xué)習(xí)使用springMVC,感興趣的朋友可以了解下
    2021-03-03
  • SpringBoot整合Echarts實(shí)現(xiàn)用戶(hù)人數(shù)和性別展示功能(詳細(xì)步驟)

    SpringBoot整合Echarts實(shí)現(xiàn)用戶(hù)人數(shù)和性別展示功能(詳細(xì)步驟)

    這篇文章主要介紹了SpringBoot整合Echarts實(shí)現(xiàn)用戶(hù)人數(shù)和性別展示,通過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)、實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層和控制層的代碼編寫(xiě),以及前端頁(yè)面的開(kāi)發(fā),本文詳細(xì)地介紹了SpringBoot整合Echarts的實(shí)現(xiàn)步驟和代碼,需要的朋友可以參考下
    2023-05-05
  • 細(xì)數(shù)java for循環(huán)中的那些坑

    細(xì)數(shù)java for循環(huán)中的那些坑

    這篇文章主要介紹了Java for循環(huán)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • spring cloud zuul 與 sentinel的結(jié)合使用操作

    spring cloud zuul 與 sentinel的結(jié)合使用操作

    這篇文章主要介紹了spring cloud zuul 與 sentinel 的結(jié)合使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中2個(gè)Integer比較相同的四種方式舉例

    Java中2個(gè)Integer比較相同的四種方式舉例

    這篇文章主要介紹了Java中比較兩個(gè)Integer對(duì)象的四種方式,并解釋了每種方式的原理和適用范圍,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • 我賭你不清楚Spring中關(guān)于Null的這些事

    我賭你不清楚Spring中關(guān)于Null的這些事

    這篇文章主要介紹了我賭你不清楚Spring中關(guān)于Null的這些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • php 頁(yè)面之間傳值的三種方法實(shí)例代碼

    php 頁(yè)面之間傳值的三種方法實(shí)例代碼

    網(wǎng)站開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要在不同頁(yè)面之間進(jìn)行值的傳遞。本文章向大家講解PHP頁(yè)面之間傳值的三種方法。需要的碼農(nóng)可以參考一下
    2016-10-10

最新評(píng)論

聊城市| 阆中市| 兴城市| 浮梁县| 调兵山市| 神木县| 山东省| 丁青县| 东宁县| 广安市| 易门县| 临漳县| 尚义县| 康保县| 曲周县| 繁昌县| 榆树市| 大丰市| 忻城县| 宝丰县| 武安市| 千阳县| 湖南省| 开封市| 绍兴市| 沧州市| 大厂| 青河县| 霍城县| 和政县| 荔浦县| 容城县| 新化县| 黔东| 隆德县| 油尖旺区| 天水市| 岫岩| 新兴县| 苏尼特右旗| 昭平县|