java - 创建 JPEG : converting access restricted code (JPEGImageEncoder) to "safe" code

标签 java eclipse image api

我得到了以下代码,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/

相关文章:

java - JmDns.create 不绑定(bind)到 InetAdess

java - 如何在 Tomcat 6 中设置根 servlet?

java - 当我从 Eclipse 启动应用程序时平板电脑会重新启动

iOS7 不加载高度超过 1950px 的 css 图像

php - Yii:有什么方法可以以压缩形式保存图像吗?

由于时区问题,Java 应用程序无法执行

java - 如何将 portlet 部署到 Liferay?

java - 插件无法实例化类

Eclipse RCP 定义一种新的项目

c++ - Qt 图像 I/O 和 QPixmap::grabWindow