Image 返回1*1像素图像以响应播放scala
我需要在每个响应中返回相同的1*1像素的虚拟图像。我正在使用bufferArray来实现这一点,我的代码如下:Image 返回1*1像素图像以响应播放scala,image,scala,playframework,response,Image,Scala,Playframework,Response,我需要在每个响应中返回相同的1*1像素的虚拟图像。我正在使用bufferArray来实现这一点,我的代码如下: val image: BufferedImage = ImageIO.read(new File("public/images/dummy.png")); val baos: ByteArrayOutputStream = new ByteArrayOutputStream(); ImageIO.write(image, "png", baos); Ok(baos.toByteArr
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打开的文件过多。
请帮忙,还有别的方法吗
我已经将imagebuffer部分放在另一个对象(即对象abc{})中,并将其用作abc.baos。但错误是一样的 您应该能够将文件作为响应提供。Play具有文件的responsewriter,因此不需要ByteArrayBuffer。如果您这样做,Play还应在文件送达后为您关闭文件 另外,请在您的主要帖子下查看我对缓存的评论,您只需使用:
Ok.sendFile(new File("public/images/dummy.png"))
首先,您忘记关闭文件,因为此响应总是相同的,所以您可以将控制器方法与缓存一起使用:这将防止从磁盘反复读取映像