Java 创建JPEG:将访问限制代码(JPEGImageEncoder)转换为";“安全”;代码
我得到了以下代码,Eclipse将其(在Java 创建JPEG:将访问限制代码(JPEGImageEncoder)转换为";“安全”;代码,java,eclipse,image,api,Java,Eclipse,Image,Api,我得到了以下代码,Eclipse将其(在JPEGImageEncoder行)标记为错误(访问限制)。我更改了Eclipse选项以使代码可编译,但我了解到该错误意味着该类(JPEGImageEncoder)可能无法由某些JRE实现(而不是Sun/Oracle实现)实现 那么,哪些代码应该没有访问限制,即完全安全的代码来做同样的事情(创建JPG图像) 也许我误解了,但是如果您只想将BuffereImage对象保存为jpeg,那么您可以这样做(从Java 1.4开始): 以下链接提供了更多信息: 如您
JPEGImageEncoder
行)标记为错误(访问限制)。我更改了Eclipse选项以使代码可编译,但我了解到该错误意味着该类(JPEGImageEncoder
)可能无法由某些JRE实现(而不是Sun/Oracle实现)实现
那么,哪些代码应该没有访问限制,即完全安全的代码来做同样的事情(创建JPG图像)
也许我误解了,但是如果您只想将BuffereImage对象保存为jpeg,那么您可以这样做(从Java 1.4开始): 以下链接提供了更多信息: 如您所见,它说JPEG、PNG、GIF、BMP和WBMP将始终受支持 如果您想设置压缩/质量,需要多做一点工作,但不会太多。假设您有一个BuffereImage和一个outFile:
IIOImage outputImage = new IIOImage(bufferedImage, null, null);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();
writer.setOutput(new FileImageOutputStream(outFile));
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(.75f); // float between 0 and 1, 1 for max quality.
writer.write( null, outputImage, writeParam);
(从上一个答案中修复)我又添加了几行。我也需要设置jpg的质量。ImageIO能做到吗?很好。我已经更新了答案,以显示如何设置jpeg压缩。
ImageIO.write(bufferedImage,"jpg",file);
IIOImage outputImage = new IIOImage(bufferedImage, null, null);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();
writer.setOutput(new FileImageOutputStream(outFile));
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(.75f); // float between 0 and 1, 1 for max quality.
writer.write( null, outputImage, writeParam);