java 如何设置图片大小

2025-10-18 06:32:43

最近做了一个关于图片浏览的内容。我是这么处理的,给大家分享一下。如果大家有好的方案的话一定要早点告诉我。

方法/步骤

1.Graphics2D 提供了图片调整功能

BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);

Graphics2D g = resizedImage.createGraphics(); 

g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null); 

g.dispose();

2.如果想调整图片的大小可以使用以下方法

BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);

Graphics2D g = resizedImage.createGraphics();g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, 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);

3.代码演示

package ImageIO;

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 ImageTest {

    private static final int IMG_WIDTH = 100;

    private static final int IMG_HEIGHT = 100;

    public static void main(String [] args){

    try{

        BufferedImage originalImage = ImageIO.read(new File("D:\\1.png"));

        int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();

        BufferedImage resizeImageJpg = resizeImage(originalImage, type);

        ImageIO.write(resizeImageJpg, "jpg", new File("E:\\ target.jpg"));

        BufferedImage resizeImagePng = resizeImage(originalImage, type);

        ImageIO.write(resizeImagePng, "png", new File("E:\\target.jpg"));

        BufferedImage resizeImageHintJpg = resizeImageWithHint(originalImage, type);

        ImageIO.write(resizeImageHintJpg, "jpg", new File("E:\\target.jpg"));

        BufferedImage resizeImageHintPng = resizeImageWithHint(originalImage, type);

        ImageIO.write(resizeImageHintPng, "png", new File("E:\\target.jpg"));

    }catch(IOException e){

        System.out.println(e.getMessage());

    }

    }

    private static BufferedImage resizeImage(BufferedImage originalImage, int type){

    BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);

    Graphics2D g = resizedImage.createGraphics();

    g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);

    g.dispose();

    return resizedImage;

    }

    private static BufferedImage resizeImageWithHint(BufferedImage originalImage, int type){

    BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);

    Graphics2D g = resizedImage.createGraphics();

    g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, 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;

    }}

这样我们可以使用调整后的图片,把它添加到Jlabel中。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢