我使用playframework 2.2.1和Java,
我试图传递BufferedImage或ByteArray或ByteArrayInputStream
来查看模板,以便直接从内存中显示在浏览器中,
而不保存到服务器存储.
在我的视图模板中,我请求一个图像:
我的应用控制器:
public static Result getImage() throws IOException{
BufferedImage image = ImageIO.read(new File("public/img/1.jpg"));
//some image manipulations
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos);
return ok(baos.toByteArray()).as("image/jpg");
}
在生成的HTML中我得到:
我发现了一些关于这个主题的信息(一,二,三,四),
但它通常与旧版本或Scala版本的游戏有关.
请提出建议或指出我的错误,
谢谢
对于字节数组图像,这是我的解决方案(基于stackoverflow中的其他解决方案):
控制者:
public static Result getImage(Long id) {
Entity entity = Entity.find.byId(id);
ByteArrayInputStream input = null;
if (entity.getImage() != null) {
input = new ByteArrayInputStream(entity.getImage());
} else {
try {
byte[] byteArray;
File file = Play.getFile("/public/images/no_photo.jpg", Play.current());
byteArray = IOUtils.toByteArray(new FileInputStream(file));
input = new ByteArrayInputStream(byteArray);
} catch (Exception e) {
}
}
return ok(input).as("image/jpeg");
}
路线档案:
GET /entity/image/:id controllers.Entities.getImage(id:Long)
风景:
<img src=@{routes.Entities.getImage(entity.getId())}>