java – 正确替换Sun内部com.sun.image.codec.jpeg包的使用?

我们有一些代码可以使用这个旧的内部Sun软件包来处理图像,实际上在从输入流读取/解码后将JPEG编码为特定的大小和质量.代码示例如下.我将非常感谢使用适当的java.*或javax.* API的最佳实践替换示例.

private void encodeJPEG(BufferedImage bi, BufferedOutputStream out, float quality) throws
  ImageFormatException, IOException {
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
 param.setQuality(quality, false);
 param.setDensityUnit(DENSITY_UNIT);
 param.setXDensity(DENSITY);
 param.setYDensity(DENSITY);
 encoder.setJPEGEncodeParam(param);
 encoder.encode(bi);
}


private void initJPEG(File jpegFile) throws FileNotFoundException, IOException,
  IOException {
FileInputStream inputStream = new FileInputStream(jpegFile);
try {
  JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(inputStream);
  buffImage = decoder.decodeAsBufferedImage();
}
.....error handling.....

}

解决方法:

我没有尝试过这种方法,但你可以看看Java Image I/O API. JPEGImageWriteParam class会特别有意思.

上一篇:关于图片预加载的思考


下一篇:【Qt6网络抓包工具项目实战】1.9多线程框架设计与开发