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:表示高度