图片剪贴工具类

1.图片剪贴工具类:ImageCutUtil.java
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import javax.imageio.ImageIO;
public class ImageCutUtil {
  public static String cutImage(String srcPath, String name, int width, int height)throws IOException {
    File srcFile = new File(srcPath);
    BufferedImage image = ImageIO.read(srcFile);
    int srcWidth = image.getWidth(null);
    int srcHeight = image.getHeight(null);
    int newWidth = 0, newHeight = 0;
    int x = 0, y = 0;
    double scale_w = (double) width / srcWidth;
    double scale_h = (double) height / srcHeight;
    System.out.println("scale_w=" + scale_w + ",scale_h=" + scale_h);
    // 按原比例缩放图片
    if (scale_w < scale_h) {
      newHeight = height;
      newWidth = (int) (srcWidth * scale_h);
      x = (newWidth - width) / 2;
    } else {
      newHeight = (int) (srcHeight * scale_w);
      newWidth = width;
      y = (newHeight - height) / 2;
    }
    BufferedImage newImage = new BufferedImage(newWidth, newHeight,
    BufferedImage.TYPE_INT_RGB);
    newImage.getGraphics().drawImage(image.getScaledInstance(newWidth, newHeight,Image.SCALE_SMOOTH), 0, 0, null);
    // 保存缩放后的图片
    String fileSufix = srcFile.getName().substring(srcFile.getName().lastIndexOf(".") + 1);
    // String string = UUID.randomUUID().toString();//可以作为文件的名字Cname
    File destFile = new File(srcFile.getParent(), name + "." + fileSufix);
    // System.out.println(fileSufix);
    // System.out.println(destFile);
    // 保存裁剪后的图片
    ImageIO.write(newImage.getSubimage(x, y, width, height), fileSufix,destFile);
    return "/" + name+ "." + fileSufix;
  }
}
 
2.使用示例:
String name = "F:/article_image/article_" + i + ".jpg";//本地路径
String cName = "article_" + i + "_cut";//剪贴后的名字,不带后缀
String cutImage = ImageCutUtil.cutImage(name, cName, 630, 320);//630:表示宽度, 320:表示高度
原文地址:https://www.cnblogs.com/yysbolg/p/7382837.html