import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包

本文介绍在Eclipse中使用JPEGCodec进行图片处理时遇到的访问限制错误,并提供了解决方案,即调整Eclipse的编译器设置,将受限API的错误级别从ERROR改为WARNING。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import com.sun.image.codec.jpeg.JPEGCodec;
在Eclipse中处理图片,需要引入两个包:
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
报错:
Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar


此时解决办法:
Eclipse默认把这些受访问限制的API设成了ERROR。只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过。可能你的已经是warnin了重新编译下即可

### 使用 `com.sun.image.codec.jpeg.JPEGCodec` 和 `JPEGImageEncoder` 进行图像编码 在早期版本的 Java 中,可以使用 `com.sun.image.codec.jpeg.JPEGCodec` 和 `JPEGImageEncoder` 来处理 JPEG 图像文件。然而,在较新的 JDK 版本中,这些类已经被移除,因此可能会遇到程序存在的问题[^4]。 对于仍然希望使用这些类的情况,下面是一个简单的示例代码展示如何利用这两个类来保存 BufferedImage 对象到指定路径作为 JPEG 文件: ```java import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.io.File; import java.io.FileOutputStream; // 注意:此部分代码适用于旧版JDK,新版本可能无法正常工作 import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class ImageToJpeg { public static void main(String[] args) throws Exception { String inputFile = "input.png"; // 输入图片路径 String outputFile = "output.jpg"; // 输出图片路径 File file = new File(inputFile); Toolkit tk = Toolkit.getDefaultToolkit(); Image image = tk.createImage(file.toURI().toURL()); while (image.getWidth(null) == -1) { try { Thread.sleep(20); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } int width = image.getWidth(null); int height = image.getHeight(null); java.awt.image.BufferedImage bufferedImage = new java.awt.image.BufferedImage(width, height, java.awt.image.BufferedImage.TYPE_INT_RGB); Graphics g = bufferedImage.getGraphics(); g.drawImage(image, 0, 0, null); FileOutputStream fos = new FileOutputStream(outputFile); JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos); JPEGEncodeParam param = jpegEncoder.getDefaultJPEGEncodeParam(bufferedImage); param.setQuality((float) 0.75, true); jpegEncoder.setJPEGEncodeParam(param); jpegEncoder.encode(bufferedImage); fos.close(); } } ``` 需要注意的是,上述方法依赖于已经废弃并从标准库中删除的部分 API,所以在现代开发环境中推荐采用其他替代方案,比如 Apache Commons Imaging 或者 Twelvemonkeys 的插件扩展支持更多格式的功能[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值