首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 命令列動態生成 JPG 圖片:BufferedImage 實戰入門

     編輯:Java 程式設計入門

為什麼選擇命令列生成圖片?

許多動態圖片範例基於 Servlet,部署繁瑣。若只需離線生成報表圖表、驗證碼、水印圖片,直接在命令列執行 java GenImage output.jpg 更簡單、可腳本化、易整合 CI/CD。

核心步驟三部曲

  1. 建立畫布:BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  2. 繪製內容:取得 Graphics2D g = image.createGraphics();,呼叫 drawString、drawLine、fillRect 等繪圖 API
  3. 編碼輸出:使用 ImageIO.write(image, "jpg", new File(path))(JDK 內建,無需 com.sun.image.codec.jpeg 專屬類)

完整可執行範例

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

public class CmdImageGen {
    public static void main(String[] args) throws IOException {
        if (args.length < 1) {
            System.err.println("用法: java CmdImageGen <輸出路徑.jpg> [寬] [高]");
            return;
        }
        int w = args.length > 1 ? Integer.parseInt(args[1]) : 400;
        int h = args.length > 2 ? Integer.parseInt(args[2]) : 300;
        String outPath = args[0];

        // 1. 建立畫布
        BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = img.createGraphics();

        // 2. 繪製:背景、文字、幾何圖形
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, w, h);
        g.setColor(Color.BLUE);
        g.setFont(new Font("微軟正黑體", Font.BOLD, 24));
        g.drawString("Hello Java 2D!", 50, 80);
        g.setColor(Color.RED);
        g.drawOval(100, 120, 150, 100);
        g.fillRect(200, 200, 80, 50);
        g.dispose(); // 釋放圖形資源

        // 3. 輸出 JPG
        File outFile = new File(outPath);
        ImageIO.write(img, "jpg", outFile);
        System.out.println("圖片已生成: " + outFile.getAbsolutePath());
    }
}

編譯與執行

javac CmdImageGen.java
java CmdImageGen demo.jpg 600 400

進階技巧

  • 抗鋸齒:g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  • 透明背景:使用 TYPE_INT_ARGB,搭配 g.setComposite(AlphaComposite.Clear)
  • 中文字體:確保系統安裝目標字體,或載入 .ttf:Font.createFont(Font.TRUETYPE_FONT, new File("msjh.ttf"))
  • 品質控制:JPG 壓縮品質需用 ImageWriteParam,ImageIO 預設約 0.75

掌握 BufferedImage + ImageIO 組合,讓 Java 圖片生成脫離 Web 容器,輕鬆應用於批次處理、測試資料製造、自動化報表等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved