在浏览器中显示控制器中的图像对象

 浮夸诗人_219 发布于 2023-02-13 15:26

我使用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版本的游戏有关.
请提出建议或指出我的错误,
谢谢

1 个回答
  • 对于字节数组图像,这是我的解决方案(基于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())}>
    

    2023-02-13 15:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有