首页 > 解决方案 > 在java中更改图像大小

问题描述

我需要将图像大小调整为 100*100 纵横比才能创建图标。我正在使用java.awt.Graphics2D相同的。

import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
public class FileResizeService {

    public File resizeImage(File file, String fileExtension) throws IOException {
        int imageWidth=100;
        int imageHeight=100;
        BufferedImage originalImage = ImageIO.read(file);
        int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
        BufferedImage drawImage = drawImage(originalImage, type, imageWidth, imageHeight);
        ImageIO.write(drawImage, fileExtension, file);
        return file;
    }

    private BufferedImage drawImage(BufferedImage originalImage, int type, int imageWidth, int imageHeight) {
        BufferedImage resizedImage = new BufferedImage(imageWidth, imageHeight, type);
        Graphics2D g = resizedImage.createGraphics();
        g.drawImage(originalImage, 0, 0, imageWidth, imageHeight, null);
        g.dispose();
        g.setComposite(AlphaComposite.Src);
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        return resizedImage;
    }
}

上面的代码将大小为5mb的高分辨率图像调整为100*100纵横比的图像,但图像大小仍然保持不变(即在本例中为5mb),这对于图标来说太大了。我希望调整大小的图像以千字节为单位。

我错过了什么吗?

标签: javaimage-resizing

解决方案


推荐阅读