簡體   English   中英

如何使用Java將圖片發送到瀏覽器

[英]How to send picture to browser in Java

我可能一起走錯了路。 我正在嘗試使用我用Java編寫的服務器代碼將.gif或.jpg文件發送到FireFox瀏覽器。

使用此代碼:

  File pic = new File(pictureFile);
  byte[] byteContent = Files.readAllBytes(pic.toPath());
  //System.out.println("Content: " + Arrays.toString(byteContent));

我確定我已成功將文件寫入字節數組,因為如果取消注釋System.out.println()行,則IDE中的內容將讀取[-1,-40,-1,-32、0。 。] (等等)。

當我嘗試將圖片輸出到瀏覽器時,如下所示:

  os.write("<html><head><title>Not Found</title></head><body>\n".getBytes());
  os.write("<h3>" .getBytes());
  os.write( byteContent);
  os.write(" </h3>\n".getBytes());
  os.write("</body></html>\n".getBytes()); 

輸出是垃圾。 我需要做什么? 我確定我發送的是正確的HTTP標頭。

圖像數據不能直接放在HTML數據中。

您可以通過以下方式在base64中對圖像進行編碼並將其放入HTML代碼中:

<img src="data:(file type);base64,(base64 text)">

file type對於.gif應該為image/gif ,對於.jpg為image/jpeg

例:

<img src="data:image/gif;base64,R0lGODlhCgAJAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAAAKAAkAAAgkAPcJHLgPAEGCAAweLJhwYUOFCAdCLBhRYMKLDSkeNJgRIYCAADs=">

您不能直接在瀏覽器中顯示字節內容。 使用以下步驟

步驟1:將字節數組轉換為數據URL

StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(byteContent, false)));
String newImage = sb.toString();

第2步:在img標簽中使用此標簽

os.write("<img src="+newImage+" />");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM