自定义高度宽度缩小图片详解编程语言

直接上代码:

package com.henu.test; 
 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
 
public class ImgTest { 
 
    public static void createImgThumbnail(String imgSrc, int thumbWidth, 
            int thumbHeight, String outFilePath) throws InterruptedException, 
            IOException { 
        File imageFile = new File(imgSrc); 
        BufferedImage image = ImageIO.read(imageFile); 
        Integer width = image.getWidth(); 
        Integer height = image.getHeight(); 
        double i = (double) width / (double) height; 
        double j = (double) thumbWidth / (double) thumbHeight; 
        int[] d = new int[2]; 
        int x = 0; 
        int y = 0; 
        if (i > j) { 
            d[1] = thumbHeight; 
            d[0] = (int) (thumbHeight * i); 
            y = 0; 
            x = (d[0] - thumbWidth) / 2; 
        } else { 
            d[0] = thumbWidth; 
            d[1] = (int) (thumbWidth / i); 
            x = 0; 
            y = (d[1] - thumbHeight) / 2; 
        } 
        File outFile = new File(outFilePath); 
        if (!outFile.getParentFile().exists()) { 
            outFile.getParentFile().mkdirs(); 
        } 
 
        /* 等比例缩放 */ 
        BufferedImage newImage = new BufferedImage(d[0], d[1], image.getType()); 
        Graphics g = newImage.getGraphics(); 
        g.drawImage(image, 0, 0, d[0], d[1], null); 
        g.dispose(); 
        /* 居中剪裁 */ 
        newImage = newImage.getSubimage(x, y, thumbWidth, thumbHeight); 
        ImageIO.write( 
                newImage, 
                imageFile.getName().substring( 
                        imageFile.getName().lastIndexOf(".") + 1), outFile); 
    } 
 
    public static void main(String[] args) throws Exception { 
        ImgTest.createImgThumbnail("D:/test/2.jpg", 510, 288,  
                "D:/test/test_2.jpg"); 
    } 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16037.html

(0)
上一篇 2021年7月19日 18:58
下一篇 2021年7月19日 18:58

相关推荐

发表回复

登录后才能评论