import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder;
时间: 2025-01-15 22:17:08 浏览: 103
### 使用 `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]。
阅读全文
相关推荐












