通過網路HTTP URL將圖片儲存為byte陣列
阿新 • • 發佈:2019-01-31
本人菜鳥一枚,發文僅供個人學習。
最近工作中給了我一個任務,要我在前端給的一個介面路徑後,我拼接路徑前的
http://IP:埠 在瀏覽器中就會開啟一個圖片,我要根據這個URL獲取到這個圖片
的 byte[ ], 最後用base64加密傳送。
下面是程式碼實現
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Img {
public static void main(String[] args) throws Exception {
String url = "http://pic39.nipic.com/20140226/18071023_152956865000_2.jpg"; byte[] bytes = getFileStream(url); OutputStream out = new FileOutputStream("D:\\aaa.jpg"); InputStream is = new ByteArrayInputStream(bytes); byte[] buff = new byte[1024]; int len = 0; while((len=is.read(buff))!=-1){ out.write(buff, 0, len); } is.close(); out.close(); } /** * 得到檔案流 * @param url * @return */ public static byte[] getFileStream(String url){ try { URL httpUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection)httpUrl.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(); }
}