java 图片批量裁剪 源代码

来源:互联网 发布:ipad淘宝卖家版 编辑:程序博客网 时间:2024/06/06 00:03

java 图片批量裁剪 源代码



package com.frank.dx;import java.awt.Image;import java.awt.Rectangle;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import javax.imageio.ImageIO;import javax.imageio.ImageReadParam;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;public class ImageHelper {public static void main(String[] args) {String path = "C:\\Users\\lenovo\\Downloads";File fils = new File(path);File files[]=fils.listFiles();for (int i = 0; i < files.length; i++) {String fileName = files[i].getAbsolutePath();if (!files[i].isFile()) {continue;}String name = path+"\\out\\";if (!new File(name).exists()) {new File(name).mkdir();}try {cutHalfImage(fileName, name+i+".jpg",name+i+"-1.jpg");} catch (IOException e) {e.printStackTrace();}}}/* * 根据尺寸图片居中裁剪 */ public static void cutCenterImage(String src,String dest,int w,int h) throws IOException{  Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");          ImageReader reader = (ImageReader)iterator.next();          InputStream in=new FileInputStream(src);         ImageInputStream iis = ImageIO.createImageInputStream(in);          reader.setInput(iis, true);          ImageReadParam param = reader.getDefaultReadParam();          int imageIndex = 0;          Rectangle rect = new Rectangle((reader.getWidth(imageIndex)-w)/2, (reader.getHeight(imageIndex)-h)/2, w, h);           param.setSourceRegion(rect);          BufferedImage bi = reader.read(0,param);            ImageIO.write(bi, "jpg", new File(dest));              }/* * 图片裁剪二分之一 */ public static void cutHalfImage(String src,String dest,String dest2) throws IOException{  Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");          ImageReader reader = (ImageReader)iterator.next();          InputStream in=new FileInputStream(src);         ImageInputStream iis = ImageIO.createImageInputStream(in);          reader.setInput(iis, true);          ImageReadParam param = reader.getDefaultReadParam();          int imageIndex = 0;          int width = reader.getWidth(imageIndex);          int height = reader.getHeight(imageIndex);          Rectangle rect = new Rectangle(0, 0, width/2, height);          param.setSourceRegion(rect);          BufferedImage bi = reader.read(0,param);            ImageIO.write(bi, "jpg", new File(dest));                   Rectangle rect2 = new Rectangle(width/2, 0, width, height);          param.setSourceRegion(rect2);          bi = reader.read(0,param);            ImageIO.write(bi, "jpg", new File(dest2));  }/* * 图片裁剪通用接口 */    public static void cutImage(String src,String dest,int x,int y,int w,int h) throws IOException{            Iterator iterator = ImageIO.getImageReadersByFormatName("jpg");            ImageReader reader = (ImageReader)iterator.next();            InputStream in=new FileInputStream(src);           ImageInputStream iis = ImageIO.createImageInputStream(in);            reader.setInput(iis, true);            ImageReadParam param = reader.getDefaultReadParam();            Rectangle rect = new Rectangle(x, y, w,h);             param.setSourceRegion(rect);            BufferedImage bi = reader.read(0,param);              ImageIO.write(bi, "jpg", new File(dest));               }     /*     * 图片缩放     */    public static void zoomImage(String src,String dest,int w,int h) throws Exception {double wr=0,hr=0;File srcFile = new File(src);File destFile = new File(dest);BufferedImage bufImg = ImageIO.read(srcFile);Image Itemp = bufImg.getScaledInstance(w, h, bufImg.SCALE_SMOOTH);wr=w*1.0/bufImg.getWidth();hr=h*1.0 / bufImg.getHeight();AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(wr, hr), null);Itemp = ato.filter(bufImg, null);try {ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile);} catch (Exception ex) {ex.printStackTrace();}}}


0 0