当前位置:首页 > Java

java如何切图片

2026-03-24 14:11:44Java

使用 Java 切分图片

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

java如何切图片

使用 BufferedImageGraphics2D

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

java如何切图片

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 库,可以方便地进行图片切分。

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
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何打开

java如何打开

安装Java开发环境 下载并安装Java Development Kit (JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH变量正…

jquery图片

jquery图片

jQuery 图片操作 jQuery 提供了多种方法来处理图片,包括加载、显示、隐藏、动画效果等。以下是一些常见的 jQuery 图片操作方法: 动态加载图片 使用 jQuery 的 attr()…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…