Java 图片渲染到前端,向前端一次返回多张Base64图片


前言

当我们从服务器读取的图片链接返回给前端,前端可以很轻松的下载和展示,但是对于临时文件,我们不需要保存到服务器,比如PPT转图片,PDF转图片等等,我们需要直接返回给前端,对于一张图片可以使用flush()渲染到前端,多张图片可以把图片编码成Base64,并存储到数组中。


图片渲染到前端

    /**
     * 文件字节流渲染前端
     *
     * @param is       输入流
     * @param response 响应
     */
    private static void flush(InputStream is, HttpServletResponse response) {
        try (ServletOutputStream out = response.getOutputStream()) {
            byte[] buff = new byte[1024];
            int length = 0;
            while ((length = is.read(buff)) > 0) {
                out.write(buff, 0, length);
            }
            IOUtils.closeQuietly(is);
            out.close();
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

返回结果示例:

在这里插入图片描述

向前端一次返回多张Base64图片

1、将图片用for循环从内存读出

2、将图片编码成Base64,并存储到数组ArrayList中

3、返回给前端编码好的图片,前端代码依次解析即可

    List<String> base64Images = new ArrayList<>();
    for (byte[] image : images) {
        String base64str = Base64.encodeBase64String(image);
        base64Images.add("data:image/png;base64," + base64str);
    }

返回结果示例:

在这里插入图片描述