图片居中

前言

在开发过程中,有时候想要将一张图片在另外一张图片居中显示,可以采取一下做法

图片居中显示

java 复制代码
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class ImageCenterDisplayDemo {

    static void main() {
        try {
            // 1. 加载子图像(要居中显示的图像)
            BufferedImage subImage = ImageIO.read(new File("D:\temp\2.png"));
            // 2. 创建父图像(画布,这里创建800x600的空白图像,也可以加载现有图像)
            int parentWidth = 2000;
            int parentHeight = 2000;
            BufferedImage parentImage = new BufferedImage(parentWidth, parentHeight, BufferedImage.TYPE_INT_RGB);

            // 3. 调用方法将子图像居中绘制到父图像
            BufferedImage resultImage = drawImageCentered(parentImage, subImage);

            // 4. 保存结果图像(可选)
            ImageIO.write(resultImage, "PNG", new File("d:/result.png"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 将子图像居中绘制到父图像上
     *
     * @param parentImage 父图像(画布)
     * @param subImage    子图像(要居中的图像)
     * @return 绘制后的图像
     */
    public static BufferedImage drawImageCentered(BufferedImage parentImage, BufferedImage subImage) {
        // 获取父图像和子图像的宽高
        int parentW = parentImage.getWidth();
        int parentH = parentImage.getHeight();
        int subW = subImage.getWidth();
        int subH = subImage.getHeight();

        // 计算居中坐标(水平居中x,垂直居中y)
        int x = (parentW - subW) / 2;
        int y = (parentH - subH) / 2;

        // 获取Graphics2D对象(用于绘制)
        Graphics2D g2d = parentImage.createGraphics();
        try {
            // 开启抗锯齿(可选,让图像边缘更平滑)
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

            // 绘制子图像到居中坐标
            g2d.drawImage(subImage, x, y, null);
        } finally {
            // 释放资源
            g2d.dispose();
        }

        return parentImage;
    }
}

结果为

总结

可以使用以上方法将图片居中显示

相关推荐
东风破_4 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
东风破_4 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
大鸡腿同学4 小时前
黄仁勋点透的 AI 真相:能实现你知道但做不到的,却实现不了你不知道的
后端
FfHUCisI5 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI5 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
秋饼5 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
卓怡学长6 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
lemon_sjdk6 小时前
ObjectProperty
java·开发语言·算法
hh9506 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
吴声子夜歌6 小时前
Java面试——HBase原理及应用
java·面试·hbase