2015-08-08 44 views
0

我需要在每個響應中返回1 * 1像素的相同虛擬圖像。我使用bufferArray要做到這一點,我的一小段代碼片段是如下: 返回1 * 1像素圖像作爲響應播放scala

val image: BufferedImage = ImageIO.read(new File("public/images/dummy.png")); 
val baos: ByteArrayOutputStream = new ByteArrayOutputStream(); 
ImageIO.write(image, "png", baos); 

Ok(baos.toByteArray).as("image/png") 

一些時間服務器拋出錯誤,java.io.excp打開的文件太多。 請幫忙,有沒有其他的方法來做到這一點?

我已將該圖像緩衝區部分放入另一個對象(即對象abc {})並將其用作abc.baos。但錯誤是一樣的。

+0

你忘了關閉文件 – Arjan

+1

首先,因爲這反應總是一樣的,你可以在Cached中使用控制器方法:https://www.playframework.com/documentation/2.0/ScalaCache這將防止圖像被反覆從磁盤讀取 – thwiegan

回答

0

您應該能夠將該文件作爲響應提供。 Play有一個文件響應編寫器,所以不需要ByteArrayBuffer。如果你這樣做,播放還應該在服務之後關閉文件。

而且結帳我的緩存評論下您的主帖

0

你可以使用:

Ok.sendFile(new File("public/images/dummy.png")) 
相關問題