我得到了以下代码,Eclipse 将其(在 JPEGImageEncoder
行)标记为错误(访问限制)。我更改了 Eclipse 选项来编译该代码,但我读到该错误意味着该类 (JPEGImageEncoder
) 可能无法由某些 JRE 实现(不是 Sun/Oracle 实现)实现。
那么,没有访问限制的代码应该是什么,即完全安全的代码来做同样的事情(创建 JPG 图像)?
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffImage);
param.setQuality(0.8f, false);
encoder.encode(buffImage, param);
最佳答案
也许我误解了,但如果您想要做的只是将 BufferedImage 对象保存为 jpeg,您可以这样做(从 Java 1.4 开始):
ImageIO.write(bufferedImage,"jpg",file);
以下是包含更多信息的链接:http://download.oracle.com/javase/tutorial/2d/images/saveimage.html
如您所见,它表示将始终支持 JPEG、PNG、GIF、BMP 和 WBMP。
如果您想设置压缩/质量,则需要多做一些工作,但不会太多。假设您有一个 bufferedImage 和一个 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);
(根据之前的答案修复)
关于java - 创建 JPEG : converting access restricted code (JPEGImageEncoder) to "safe" code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402186/