当前位置:首页 > Java

java如何切图片

2026-03-24 14:11:44Java

使用 Java 切分图片

Java 提供了多种方式切分图片,以下是几种常见的方法:

使用 BufferedImageGraphics2D

BufferedImage 是 Java 中处理图片的核心类之一,结合 Graphics2D 可以方便地切分图片。

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageSplitter {
    public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
        File inputFile = new File(inputImagePath);
        BufferedImage originalImage = ImageIO.read(inputFile);

        int chunkWidth = originalImage.getWidth() / cols;
        int chunkHeight = originalImage.getHeight() / rows;

        int count = 0;
        for (int x = 0; x < rows; x++) {
            for (int y = 0; y < cols; y++) {
                BufferedImage subImage = originalImage.getSubimage(
                    y * chunkWidth, 
                    x * chunkHeight, 
                    chunkWidth, 
                    chunkHeight
                );

                File outputFile = new File(outputDir + "/img_" + count + ".jpg");
                ImageIO.write(subImage, "jpg", outputFile);
                count++;
            }
        }
    }
}

使用 JavaFX 的 ImageImageView

如果项目中已经引入了 JavaFX,可以使用 JavaFX 的 ImageImageView 进行图片切分。

import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public class JavaFXImageSplitter {
    public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
        Image originalImage = new Image("file:" + inputImagePath);
        int chunkWidth = (int) originalImage.getWidth() / cols;
        int chunkHeight = (int) originalImage.getHeight() / rows;

        int count = 0;
        for (int x = 0; x < rows; x++) {
            for (int y = 0; y < cols; y++) {
                ImageView imageView = new ImageView(originalImage);
                imageView.setViewport(new javafx.geometry.Rectangle2D(
                    y * chunkWidth, 
                    x * chunkHeight, 
                    chunkWidth, 
                    chunkHeight
                ));

                BufferedImage subImage = SwingFXUtils.fromFXImage(imageView.snapshot(null, null), null);
                File outputFile = new File(outputDir + "/img_" + count + ".png");
                ImageIO.write(subImage, "png", outputFile);
                count++;
            }
        }
    }
}

使用第三方库(如 Thumbnailator)

Thumbnailator 是一个简化图片处理的 Java 库,可以方便地进行图片切分。

java如何切图片

import net.coobird.thumbnailator.Thumbnails;
import java.io.File;
import java.util.Arrays;

public class ThumbnailatorSplitter {
    public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
        Thumbnails.of(inputImagePath)
            .size(cols, rows)
            .toFiles(new File(outputDir), name -> new File(outputDir + "/img_" + name + ".jpg"));
    }
}

注意事项

  • 确保输入图片路径和输出目录存在且可读写。
  • 切分后的图片格式(如 JPG、PNG)需根据实际需求选择。
  • 切分时需注意图片的宽高是否能被行数和列数整除,否则可能导致切分不均匀。

标签: 图片java
分享给朋友:

相关文章

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

eclipse如何创建java

eclipse如何创建java

在Eclipse中创建Java项目 打开Eclipse后,选择菜单栏中的"File" -> "New" -> "Java Project"。在弹出的对话框中输入项目名称,确保"Use de…

vue实现无缝图片

vue实现无缝图片

实现无缝图片轮播的方法 在Vue中实现无缝图片轮播,可以通过以下步骤完成。这种方法利用Vue的响应式特性和CSS动画,确保图片切换平滑且无缝。 使用vue-awesome-swiper库 安装vue…