將byte[]陣列轉換為影像輸出到頁面
- //
- byte[] imageData = (byte[]) ImageUtil.getImage(...);
- response.setContentType("image/png");
- OutputStream output = response.getOutputStream();
- InputStream in = new ByteArrayInputStream(imageData);
- int len;
- byte[] buf = new byte[1024];
- while ((len = in.read(buf)) != -1) {
- output.write(buf, 0, len);
- }
- output.flush();
- //如果沒有下面兩行,可能出現getOutputStream() has already been called for this response的異常
- out.clear();
- out = pageContext.pushBody();
以上是在jsp頁面中顯示一個圖片。注意在讀取圖片的時候,圖片的路徑問題。因為tomcat讀取檔案是要參照伺服器上的路徑的,所以你需要getRealPath,像下面:
File file = new File(request.getServletContext().getRealPath("/")+"jsp\\2.jpg");
下面簡單說一下我在這次圖片顯示的思考中所得到的:
我的需求是從資料庫中讀取出圖片的位元組流,然後儲存成byte[],然後將這些byte[]陣列轉換成圖片顯示在jsp頁面山。我想把根據byte[]轉換成圖片並且顯示的這項功能寫成一個servlet,然後通過img標籤來顯示圖片。
得到上面的程式之後,我想這就好辦了,由於我不僅要顯示頭像,還要顯示菜餚的圖片,店鋪的圖片等,因而我在邏輯jsp中讀取出來持久化物件中的byte[]成員,然後將這個陣列直接通過引數的形式傳遞給servlet,servlet再根據byte[]返回影像,這樣最後就可以成功顯示了,而且程式還具有很高的靈活性。
但是我失敗了。。。瀏覽器在解析的時候總是崩潰。。。。。根本無法顯示頁面
原因後來我想明白了,因為我把圖片的最大容量限制為2M,這樣我的引數的十六進位制字串的最大容量就是2M,這些資訊在瀏覽器進行遍歷和解析的時候,會被儲存在dom節點的,但是一個dom節點的最大容量是多少呢?我想瀏覽器是有規定的,引數大小也應該是有限制的,因而發生了記憶體溢位,造成瀏覽器崩潰。。。後來我把引數去掉之後,成功的顯示了圖片。
但是這樣以來,我怎麼知道該顯示哪張圖片呢?
現在的想法是,傳遞的引數應該換一換。換成什麼呢?根據type的內容分類,然後再根據不同的型別進行細節化,因為很多持久化物件已經儲存在了固定的欄位值session物件中,那麼我們可以取得這個物件,然後取出byte陣列,最後再顯示。這隻能這麼做了現在。
相關文章
- jQuery將類陣列物件轉換為陣列jQuery陣列物件
- JavaScript將陣列轉換為字串JavaScript陣列字串
- 將字串陣列轉換為浮點數陣列字串陣列
- js將偽陣列或者集合轉換為陣列JS陣列
- Java 中將 Short 轉換為 byte[]Java
- javascript將類陣列轉換為陣列程式碼例項JavaScript陣列
- C# string byte陣列轉換解析C#陣列
- Java將地圖轉換為陣列[Snippet]Java地圖陣列
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- js如何將陣列元素轉換為字串JS陣列字串
- js將dom元素集合轉換為陣列JS陣列
- byte陣列轉字串?陣列字串
- PHP陣列轉換為js陣列PHP陣列JS
- byte位元組陣列 轉換成double型別陣列型別
- Java中將 int[] 陣列 轉換為 List(ArrayList)Java陣列
- PHP利用JSON將XML轉換為陣列PHPJSONXML陣列
- C# byte陣列與Image相互轉換的方法C#陣列
- javascript將字串轉換為陣列程式碼例項JavaScript字串陣列
- JavaScript 字串轉換為陣列JavaScript字串陣列
- Java已知InputStream長度,將其轉換為byte[]Java
- android byte[]陣列,bitmap,drawable之間的相互轉換Android陣列
- js將陣列元素轉換為字串程式碼例項JS陣列字串
- 轉 IOS---NSdata 與 NSString,Byte陣列,UIImage 的相互轉換iOS陣列UI
- json字串 轉換為陣列JSON字串陣列
- Java 中陣列轉換為 ListJava陣列
- javascript如何將字串轉換成陣列JavaScript字串陣列
- ruby中將陣列轉換成hash陣列
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- 將一個Collection轉為陣列陣列
- 將輸入陣列逆序輸出陣列
- 將經典頁面轉換成現代客戶端頁面客戶端
- C#位元組陣列byte[]和字串string如何互相轉換C#陣列字串
- 使用Java完成byte陣列與十六進位制字串相互轉換Java陣列字串
- 如何在 Go 中將 []byte 轉換為 io.Reader?Go
- 將輸入流InputStream轉換為String
- 如何將一維陣列轉換成與考慮南天陣列元素?陣列
- Python教程:將有序陣列轉換為二叉搜尋樹Python陣列
- 將json格式物件轉換成陣列物件JSON物件陣列