上传压缩图片 Found class com.sun.image.codec.jpeg.JPEGImageEncoder, but interface was

### 使用 `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、付费专栏及课程。

余额充值