java生成缩略图

来源:互联网 发布:个人职业规划 知乎 编辑:程序博客网 时间:2024/06/01 08:07

java生成缩略图工具类

package cn.itcast.estore.utils;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;/** * 制作图片缩略图 *  *  *  */public class PicUtils {private String srcFile;private String destFile;private int width;private int height;private Image img;/** * 构造函数 *  * @param fileName *            String * @throws IOException */public PicUtils(String fileName) throws IOException {File _file = new File(fileName); // 读入文件this.srcFile = fileName;// 查找最后一个.int index = this.srcFile.lastIndexOf(".");String ext = this.srcFile.substring(index);this.destFile = this.srcFile.substring(0, index) + "_s" + ext;img = javax.imageio.ImageIO.read(_file); // 构造Image对象width = img.getWidth(null); // 得到源图宽height = img.getHeight(null); // 得到源图长}/** * 强制压缩/放大图片到固定的大小 *  * @param w *            int 新宽度 * @param h *            int 新高度 * @throws IOException */public void resize(int w, int h) throws IOException {BufferedImage _image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB);_image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(_image); // 近JPEG编码out.close();}/** * 按照固定的比例缩放图片 *  * @param t *            double 比例 * @throws IOException */public void resize(double t) throws IOException {int w = (int) (width * t);int h = (int) (height * t);resize(w, h);}/** * 以宽度为基准,等比例放缩图片 *  * @param w *            int 新宽度 * @throws IOException */public void resizeByWidth(int w) throws IOException {int h = (int) (height * w / width);resize(w, h);}/** * 以高度为基准,等比例缩放图片 *  * @param h *            int 新高度 * @throws IOException */public void resizeByHeight(int h) throws IOException {int w = (int) (width * h / height);resize(w, h);}/** * 按照最大高度限制,生成最大的等比例缩略图 *  * @param w *            int 最大宽度 * @param h *            int 最大高度 * @throws IOException */public void resizeFix(int w, int h) throws IOException {if (width / height > w / h) {resizeByWidth(w);} else {resizeByHeight(h);}}/** * 设置目标文件名 setDestFile *  * @param fileName *            String 文件名字符串 */public void setDestFile(String fileName) throws Exception {if (!fileName.endsWith(".jpg")) {throw new Exception("Dest File Must end with \".jpg\".");}destFile = fileName;}/** * 获取目标文件名 getDestFile */public String getDestFile() {return destFile;}/** * 获取图片原始宽度 getSrcWidth */public int getSrcWidth() {return width;}/** * 获取图片原始高度 getSrcHeight */public int getSrcHeight() {return height;}}


原创粉丝点击