根据提供的文件信息,我们可以总结出以下关于“Java图片缩放类”的相关知识点: ### Java 图片缩放类概述 在Java开发中,处理图像时经常需要进行缩放操作以适应不同的显示需求或优化资源占用。Java 提供了多种库来支持图像处理功能,包括但不限于 `java.awt` 和 `javax.imageio` 包。本篇将详细介绍一个基于这些库的自定义图片缩放类——`DwindlePic`。 ### 导入必要的包 ```java import java.io.*; import java.util.*; import com.sun.image.codec.jpeg.*; import java.awt.image.*; import java.awt.*; import java.net.*; import java.applet.*; import java.sql.*; ``` 这里导入的包涵盖了文件操作、图像编码与解码、图形绘制等多方面的功能,具体如下: - `java.io.*`: 文件读写操作。 - `java.util.*`: 集合框架等。 - `com.sun.image.codec.jpeg.*`: JPEG 编码与解码。 - `java.awt.image.*`: 图像处理相关的类。 - `java.awt.*`: 图形用户界面基础组件。 - `java.net.*`: 网络编程。 - `java.applet.*`: Applet 相关类。 - `java.sql.*`: 数据库操作。 ### 类的结构及方法详解 #### 类定义 ```java public class DwindlePic { String InputDir; // 输入图片路径 String OutputDir; // 输出图片路径 String InputFileName; // 输入图片文件名 String OutputFileName; // 输出图片文件名 int OutputWidth = 80; // 默认输出宽度 int OutputHeight = 80; // 默认输出高度 int rate = 0; boolean proportion = true; // 是否保持比例(默认为true) ... } ``` 该类通过构造函数初始化成员变量,并提供了一个核心方法 `s_pic()` 来实现图片缩放功能。 #### 构造函数 ```java public DwindlePic() { // 初始化成员变量 InputDir = ""; OutputDir = ""; InputFileName = ""; OutputFileName = ""; OutputWidth = 80; OutputHeight = 80; rate = 0; } ``` 构造函数用于初始化类中的属性,方便后续调用。 #### 核心方法 `s_pic()` ```java public boolean s_pic() { ... } ``` 该方法是实现图片缩放的核心逻辑,主要步骤如下: 1. **加载输入图片**:使用 `Toolkit.getDefaultToolkit().getImage()` 方法加载图片到内存中。 2. **缩放处理**: - 如果 `proportion` 为 `true`,则计算出合适的缩放率,以保持原图的比例。 - 创建一个新的 `BufferedImage` 对象,用于存放缩放后的图像。 - 使用 `Graphics` 对象将原始图像绘制到新的缓冲图像上。 3. **保存输出图片**:使用 `JPEGCodec.createJPEGEncoder()` 将缓冲图像编码为 JPEG 格式,并保存到指定路径。 ### 代码解析 1. **加载输入图片**:使用 `Toolkit.getDefaultToolkit().getImage()` 加载图片,通过 `MediaTracker` 确保图片完全加载完毕。 2. **缩放处理**:通过计算缩放比率,调整图片大小,并绘制到新的 `BufferedImage` 上。 3. **保存输出图片**:使用 `JPEGCodec` 编码器对缩放后的图像进行编码并输出。 ### 使用示例 假设已知输入图片路径、输出图片路径、文件名以及期望的输出尺寸,可以创建 `DwindlePic` 的实例,并调用 `s_pic()` 方法来进行图片缩放处理。 ### 总结 `DwindlePic` 类是一个简单的Java图片缩放工具,通过合理地利用Java标准库中的类和接口,实现了基本的图片加载、缩放和保存功能。在实际应用中可以根据需要进一步扩展该类的功能,例如添加异常处理机制、支持更多的图片格式等。
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.sql.*;
//缩略图类,
//本java类能将jpg图片文件,进行等比或非等比的大小转换。
//具体使用方法
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class DwindlePic {
String InputDir; //输入图路径
String OutputDir; //输出图路径
String InputFileName; //输入图文件名
String OutputFileName; //输出图文件名
int OutputWidth = 80; //默认输出图片宽
int OutputHeight = 80; //默认输出图片高
int rate = 0;
boolean proportion = true; //是否等比缩放标记(默认为等比缩放)
public DwindlePic() {
//初始化变量
InputDir = "";
OutputDir = "";
InputFileName = "";
OutputWidth = 80;
OutputHeight = 80;
rate = 0;
}
public boolean s_pic() {
// BufferedImage image;
// String NewFileName;
//建立输出文件对象
File file = new File(OutputDir + OutputFileName);
FileOutputStream tempout = null;
try {
tempout = new FileOutputStream(file);
} catch (Exception ex) {
System.out.println(ex.toString());
}
Image img = null;
Toolkit tk = Toolkit.getDefaultToolkit();
Applet app = new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img = tk.getImage(InputDir + InputFileName);
mt.addImage(img, 0);
mt.waitForID(0);
} catch (Exception e) {
e.printStackTrace();
}
if (img.getWidth(null) == -1) {
剩余5页未读,继续阅读
- taotao60862011-10-10还好。但是在linux下好像需要下载其他的插件才能够使用
- 粉丝: 27
- 资源: 71
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助