图片缩略

来源:互联网 发布:成都 大数据 招聘 编辑:程序博客网 时间:2024/05/16 08:19

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 { // / 123lkajsdf.jpg                                                        // 123lkajsdf_s.jpg    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;}public static void main(String[] args) throws IOException {    // File file=new    // File("D:\\java0926\\workspace\\estore\\WebRoot\\upload\\2\\10\\41d916d3-d6a8-4d54-9423-4be305dd93a2.jpg");    // PicUtils pc=new PicUtils(file.getCanonicalPath());    // pc.resize(200, 200);    File file = new File("d:/a", "../b.txt");    System.out.println(file.getAbsolutePath());    System.out.println(file.getCanonicalPath());}

}

0 0
原创粉丝点击