日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

图片流转base64遇到的坑

發布時間:2024/1/18 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图片流转base64遇到的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java學習問題2:網絡傳輸的圖片轉base64遇到的坑

1.之前寫圖片轉base64流的寫法

File file = new File("D:\\test\\img11.jpg");InputStream inputStream = null;BufferedOutputStream bos = null;FileOutputStream outputStream = null;try {//讀取文件轉圖片base64流inputStream = new FileInputStream(file);//inputStream.available()可以在讀寫操作前提前得知數據流有多少字節,初始化byte數組byte[] image = new byte[inputStream.available()];int readBytes = 0;inputStream.read(image);//將圖片轉為base64流BASE64Encoder encoder = new BASE64Encoder();String imageString = encoder.encode(image);//將base64流轉圖片File dir = new File("D:\\test");if(!dir.exists() && dir.isDirectory()){dir.mkdir();}BASE64Decoder decoder = new BASE64Decoder();byte[] outByte = decoder.decodeBuffer(imageString);File outFile = new File("D:\\test\\test1.jpg");outputStream = new FileOutputStream(outFile);bos = new BufferedOutputStream(outputStream);bos.write(outByte);} catch (IOException e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (bos != null) {try {bos.close();} catch (IOException e1) {e1.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e1) {e1.printStackTrace();}}}

但是inputStream.available()在網絡傳輸過程中,很有可能返回的是0,非常不靠譜!基本網上都是這個寫法,在本地無論測試多少遍都是ok的。

2.不應該定義數組大小,而是交給緩存數組遍歷while來做,修改后的代碼如下。

InputStream in = null;String imageString = null;byte[] image = null;try {in = new FileInputStream("F:\\xsnasnew\\groupvisit\\actword\\test.jpg");ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int n = 0;while (-1 != (n = in.read(buffer))) {output.write(buffer, 0, n);}image = output.toByteArray();} catch (Exception e) {e.printStackTrace();} finally {if(in!=null){try {in.close();} catch (IOException e) {e.printStackTrace();}}}if(image != null && image.length > 0){BASE64Encoder encoder = new BASE64Encoder();imageString = encoder.encode(image);}

總結

以上是生活随笔為你收集整理的图片流转base64遇到的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。