package org.yeshi.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.Thumbnails.Builder; import net.coobird.thumbnailator.geometry.Positions; /** * 图片裁剪帮助 * * @author Administrator * */ public class ImageCropUtil { /** * 剪切图片中间部分(内切) * @param sourceImage * @param destImage * @param ratio * @throws FileNotFoundException * @throws Exception */ public static void centerCrop(InputStream sourceImage, File destImage, float ratio) throws FileNotFoundException, Exception { if (sourceImage==null) throw new FileNotFoundException(); BufferedImage image = Thumbnails.of(sourceImage).scale(1.0f).asBufferedImage(); int width = image.getWidth(); int height = image.getHeight(); int newWidth = 0; int newHeight = 0; if (width > ratio * height) {// 以高为主 newHeight = height; newWidth = (int) (newHeight * ratio); } else {// 以宽为主 newWidth = width; newHeight = (int) (newWidth / ratio); } if (destImage.exists()) destImage.delete(); Thumbnails.of(sourceImage).sourceRegion(Positions.CENTER, newWidth, newHeight).scale(1.0) .toFile(destImage.getPath()); } public static void centerCrop(File sourceImage, File destImage, float ratio) throws FileNotFoundException, Exception { if (sourceImage==null) throw new FileNotFoundException(); BufferedImage image = Thumbnails.of(sourceImage).scale(1.0f).asBufferedImage(); int width = image.getWidth(); int height = image.getHeight(); int newWidth = 0; int newHeight = 0; if (width > ratio * height) {// 以高为主 newHeight = height; newWidth = (int) (newHeight * ratio); } else {// 以宽为主 newWidth = width; newHeight = (int) (newWidth / ratio); } if (destImage.exists()) destImage.delete(); Thumbnails.of(sourceImage).sourceRegion(Positions.CENTER, newWidth, newHeight).scale(1.0) .toFile(destImage.getPath()); } }