我有一个 jpeg 的 BufferedImage 对象,需要作为 servlet 响应进行流式传输。
现有代码使用 JPEGImageEncoder 流式传输 jpeg,如下所示:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(resp.getOutputStream());
resp.reset();
resp.setContentType("image/jpg");
resp.setHeader("Content-disposition", "inline;filename=xyz.jpg");
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(jpegQuality, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
我注意到这导致流式 jpeg 的文件大小增加了三倍,无法弄清楚为什么。所以我尝试使用 ImageIO 来流式传输 jpeg
ImageIO.write(image, "jpg", out);
这工作得很好,我无法确定为什么我的前任选择了 JPEGImageEncoder,并且想知道如果我改用 ImageIO 会出现什么问题,我已经比较了两个 jpeg 并且无法真正发现差异。有什么想法吗?