サーブレット応答としてストリーミングする必要があるjpegのBufferedImageオブジェクトがあります。
既存のコードは、次のような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のファイルサイズが3倍になり、理由がわからないことに気づきました。そこで、ImageIOを使用してjpegをストリーミングしてみました。
ImageIO.write(image, "jpg", out);
これは問題なく機能します。前任者がJPEGImageEncoderを選択した理由を判断できず、ImageIOの使用に変更した場合にどのような問題が発生するのか疑問に思っていました。両方のjpegを比較しましたが、違いを見つけることができませんでした。何かご意見は?