欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java上传图片,对图片进行等比例缩放,及局部裁剪的工具类代码,上传图片工具类,从项目中摘出来的,。[J

来源: javaer 分享于  点击 17002 次 点评:60

java上传图片,对图片进行等比例缩放,及局部裁剪的工具类代码,上传图片工具类,从项目中摘出来的,。[J


从项目中摘出来的,。

[Java]代码

import java.awt.Container;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.MediaTracker;import java.awt.Rectangle;import java.awt.RenderingHints;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.awt.image.CropImageFilter;import java.awt.image.FilteredImageSource;import java.awt.image.ImageFilter;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.UUID;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class FileUploadUtils {    /**     * 裁剪图片      * @param input     * @param basepath     * @param uid     * @param x     * @param y     * @param width     * @param height     * @return 绝对路径     * @throws IOException      */    public static String cutImg(String input,String basepath,int x,int y,int width,int height) throws IOException{        String path2 = basepath+"/"+ConstantUtils.USERFACETEMPPATH;        String postfix = getPostfix(input);        String dst = path2 +"/"+UUID.randomUUID().toString()+"."+postfix;        createDir(path2);        imgCut(basepath+input,dst,postfix,x,y,width,height);        return dst;    }    /**     * 裁剪图片     * @param input     * @param src     * @param x     * @param y     * @param width     * @param height     * @throws IOException     */    public static void imgCut(String input,String dst,String type,int x,int y,int width,int height) throws IOException     {            BufferedImage fromimg = ImageIO.read(new File(input));            ImageFilter cropFilter = new CropImageFilter(x,y,width,height);               Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(fromimg.getSource(), cropFilter));            BufferedImage tag = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);              Graphics g = tag.getGraphics();               g.drawImage(img, 0, 0, null); // 绘制小图              g.dispose();               // 输出为文件              // dir = "d:\\temp\\cut_image_" + i + "_" + j + ".jpg";               File f = new File(dst);               ImageIO.write(tag,type, f);          }    /**     * 上传头像文件     * @param src     * @param basepath     * @param filename     * @return     * @throws Exception     */    public static String uploadImg(File src,String basepath,String filename) throws Exception{        String daypath = DateTools.getYear() + "" + DateTools.getMonth() + "" + DateTools.getMonthWeek();        String temppath = ConstantUtils.BASEUPLOADPATH+"/"+ConstantUtils.ORIGINALIMGPATH+"/" + daypath;        String thumbnailpath = ConstantUtils.BASEUPLOADPATH+"/"+ConstantUtils.THUMBNAILIMGPATH+"/" + daypath;        String postfix = getPostfix(filename);        String uuid = UUID.randomUUID().toString();        String dsttempname = uuid+"."+postfix;        createDir(basepath +"/"+temppath);        createDir (basepath +"/"+ thumbnailpath);        String dstallpath = basepath +"/"+temppath+"/"+dsttempname;        String dstthumbnailpath = basepath +"/"+thumbnailpath+"/"+dsttempname;        copy(src,new File(dstallpath));        //对上传的文件进行 等比例 裁剪。  按照前段要展现的  height width        Thumbnail(dstallpath,dstthumbnailpath,350,300,100);        //返回裁剪后的路径         return thumbnailpath+"/"+dsttempname;    }    /**     * 上传文件     * @param src     * @param dst     * @throws Exception     */    public static void copy(File src, File dst) throws Exception {        try {            InputStream in = null;            OutputStream out = null;            try {                in = new BufferedInputStream(new FileInputStream(src), ConstantUtils.BUFFER_SIZE);                out = new BufferedOutputStream(new FileOutputStream(dst), ConstantUtils.BUFFER_SIZE);                byte[] buffer = new byte[ConstantUtils.BUFFER_SIZE];                while (in.read(buffer) > 0) {                    out.write(buffer);                }            } finally {                if (null != in) {                    in.close();                }                if (null != out) {                    out.close();                }            }        } catch (Exception e) {            e.printStackTrace();            throw e;        }    }    /**     * 得到文件后缀  jpg       * @param fileName     * @return     */    public static String getPostfix(String fileName){        if (fileName.equals(""))            return "";        int pos = fileName.lastIndexOf(".");        if (pos < 0) {            return fileName.substring(fileName.length() - 3).toLowerCase();        } else {            return fileName.substring(pos+1).toLowerCase();        }    }    /**     * 创建目录     * @param filePath     */    public static void createDir(String filePath) {        File myFile = new File(filePath);        if (!myFile.exists()) {            if (!myFile.mkdirs())                System.out.println("创建目录 fail");            else                System.out.println("创建目录 success");        }        myFile = null;    }    /**     * 等比例缩放图片     * @param infile     * @param outfile     * @param width     * @param height     * @param quality     * @throws IOException     * @throws InterruptedException     */    public static void Thumbnail(String infile, String outfile, int width, int height, int quality) throws IOException, InterruptedException {        // save thumbnail image to OUTFILE        //System.out.println("infile:" + infile);        BufferedImage thumbImage = null;        BufferedOutputStream out = null;        Image image = null;        image = Toolkit.getDefaultToolkit().createImage(infile);        MediaTracker mediaTracker = new MediaTracker(new Container());        mediaTracker.addImage(image, 0);        mediaTracker.waitForID(0);        int thumbWidth = width;        int thumbHeight = height;        double thumbRatio = (double) thumbWidth / (double) thumbHeight;        int imageWidth = image.getWidth(null);        int imageHeight = image.getHeight(null);        double imageRatio = (double) imageWidth / (double) imageHeight;        if (thumbRatio < imageRatio) {            thumbHeight = (int) (thumbWidth / imageRatio);        } else {            thumbWidth = (int) (thumbHeight * imageRatio);        }        thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);        Graphics2D graphics2D = thumbImage.createGraphics();        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);        graphics2D.drawImage(image,0,0, thumbWidth, thumbHeight, null);        out = new BufferedOutputStream(new FileOutputStream(outfile));        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);        quality = Math.max(0, Math.min(quality, 100));        param.setQuality((float) quality / 100.0f, false);        encoder.setJPEGEncodeParam(param);        encoder.encode(thumbImage);        out.close();        thumbImage = null;        out = null;        image = null;    }}
相关栏目:

用户点评