2010-10-22 23 views
0

我正在創建一個簡單的HTTP服務器作爲Java服務器的一部分。這個Java服務器的一個組件是從網絡攝像頭實時捕捉圖像。目前我正在將圖像寫入磁盤,並通過Apache提供。在Java 1.6中如何通過HTTPHandler在內存中提供JPEG?

我最終想做的事情是將JPEG寫入JPEG對象列表中的內存,然後使用HTTPHandler在請求時提供合適的圖像。

我沒有看到任何明確的方式來做到這一點。有人有主意嗎?

這裏是我如何獲得圖像,使用LTI公民作爲捕捉庫 - 這是它們保存到磁盤 - 我想將它們存儲在內存中:

try 
    { 
    String fileName = "image" + System.currentTimeMillis() + ".jpg"; 

FileOutputStream os = new FileOutputStream(FILE_PATH + fileName); 
final JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(os); 
jpeg.encode(AWTImageConverter.toBufferedImage(image)); 

os.close(); 

log.info("Got image as filename: " + fileName); 
} 
catch (Exception e) 
{ 
log.error("An error occured", e); 
} 

回答

1

如果使用ByteArrayOutputStream代替一個FileOutputStream您可以捕獲輸出,然後在完成寫入後調用toByteArray來獲取數據。

至於爲它服務,當你得到一個圖像請求時,將內容類型設置爲「image/jpeg」,將內容長度設置爲字節數組的長度,然後將字節寫入響應的輸出流。

+0

這就像一個魅力,謝謝。 :-)爲了後代萬一有人真的想要一個代碼示例,這就是我所做的。 – 2010-10-28 08:36:11

+0

刪除我想我不能把代碼放在這裏... – 2010-10-28 08:36:51

相關問題