当前位置:首页 > Java

java 如何打印图片

2026-03-21 06:10:38Java

使用 ImageIO 类打印图片

ImageIO 是 Java 标准库中用于图像处理的工具类,可以读取和写入图片。以下代码展示了如何加载图片并打印:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import java.io.File;
import java.io.IOException;

public class ImagePrinter implements Printable {
    private BufferedImage image;

    public ImagePrinter(String imagePath) throws IOException {
        this.image = ImageIO.read(new File(imagePath));
    }

    @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
            return NO_SUCH_PAGE;
        }
        Graphics2D g2d = (Graphics2D) graphics;
        g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
        return PAGE_EXISTS;
    }

    public static void printImage(String imagePath) throws PrinterException, IOException {
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPrintable(new ImagePrinter(imagePath));
        if (job.printDialog()) {
            job.print();
        }
    }

    public static void main(String[] args) {
        try {
            printImage("path/to/your/image.jpg");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用 JavaFX 打印图片

如果项目基于 JavaFX,可以利用 javafx.print 包实现图片打印功能:

java 如何打印图片

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
import javafx.print.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class JavaFXImagePrinter extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        Image image = new Image("file:path/to/your/image.jpg");
        ImageView imageView = new ImageView(image);
        PrinterJob job = PrinterJob.createPrinterJob();
        if (job != null && job.showPrintDialog(stage)) {
            boolean success = job.printPage(imageView);
            if (success) {
                job.endJob();
            }
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

注意事项

  • 图片路径:确保路径正确,支持常见格式(如 JPG、PNG)。
  • 打印机配置:代码会调用系统默认打印机,用户可通过打印对话框选择其他打印机。
  • 异常处理:捕获 IOExceptionPrinterException 以处理文件读取或打印错误。

两种方法分别适用于 Swing/AWT 和 JavaFX 环境,根据项目技术栈选择合适的方式。

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

相关文章

如何使用java

如何使用java

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

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名.方法名…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…