JPEGImageWriteParam 抛出 ClassCastException
JPEGImageWriteParam throws ClassCastException
我正在尝试使用以下代码
压缩 java 中的图像
ImageWriter writer = (ImageWriter) ImageIO.getImageWritersByMIMEType("image/jpeg").next();
JPEGImageWriteParam param = (JPEGImageWriteParam) writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG");
param.setCompressionQuality(0.2f);
param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
writer.setOutput(ImageIO.createImageOutputStream(outputStream));
writer.write(null, new IIOImage(resizedImg, null, null), param);
第二行JPEGImageWriteParam param = (JPEGImageWriteParam) writer.getDefaultWriteParam();
抛出ClassCastException
.
如果我将其更改为 ImageWriteParam param = writer.getDefaultWriteParam();
它为 param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
.
行抛出 UnsupportedOperationException
提前致谢...
ImageWriter#getDefaultWriteParam()
给出类型为 ImageWriteParam
而不是 JPEGImageWriteParam
的对象,这就是为什么你会得到 class 转换异常。您应该做的是创建一个新的 JPEGImageWriteParam
并使用它。
JPEGImageWriteParam param = new JPEGImageWriteParam(<pass your lacale here>);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG");
param.setCompressionQuality(0.2f);
param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
希望对您有所帮助。
我正在尝试使用以下代码
压缩 java 中的图像ImageWriter writer = (ImageWriter) ImageIO.getImageWritersByMIMEType("image/jpeg").next();
JPEGImageWriteParam param = (JPEGImageWriteParam) writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG");
param.setCompressionQuality(0.2f);
param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
writer.setOutput(ImageIO.createImageOutputStream(outputStream));
writer.write(null, new IIOImage(resizedImg, null, null), param);
第二行JPEGImageWriteParam param = (JPEGImageWriteParam) writer.getDefaultWriteParam();
抛出ClassCastException
.
如果我将其更改为 ImageWriteParam param = writer.getDefaultWriteParam();
它为 param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
.
行抛出 UnsupportedOperationException
提前致谢...
ImageWriter#getDefaultWriteParam()
给出类型为 ImageWriteParam
而不是 JPEGImageWriteParam
的对象,这就是为什么你会得到 class 转换异常。您应该做的是创建一个新的 JPEGImageWriteParam
并使用它。
JPEGImageWriteParam param = new JPEGImageWriteParam(<pass your lacale here>);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG");
param.setCompressionQuality(0.2f);
param.setProgressiveMode( ImageWriteParam.MODE_DEFAULT );
希望对您有所帮助。