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

用 Java 2D 繪製 Google 中文名「谷歌」:BufferedImage + Graphics2D 入門實作

     編輯:Java 程式設計入門

程式碼完整版

package ccidnet;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class GoogleLogoDrawer {
    public static void main(String[] args) {
        int width = 300, height = 150;
        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = img.createGraphics();

        try {
            // 背景與筆刷
            g2d.setBackground(Color.BLACK);
            g2d.clearRect(0, 0, width, height);
            g2d.setColor(Color.GREEN);

            // 主標題
            Font titleFont = new Font("微軟正黑體", Font.BOLD, 48);
            g2d.setFont(titleFont);
            g2d.drawString("谷歌", 60, 90);

            // 簽名
            Font signFont = new Font("微軟正黑體", Font.PLAIN, 16);
            g2d.setFont(signFont);
            g2d.drawString("by 神燈", 180, 130);

            // 輸出 JPEG
            try (OutputStream out = new FileOutputStream("google.jpg")) {
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(img);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            g2d.dispose();
        }
    }
}

關鍵 API 解析

類別/方法用途
BufferedImage記憶體中可繪圖的影像緩衝區
Graphics2D進階 2D 繪圖上下文(抗鋸齒、描邊、字型、仿射變換)
JPEGImageEncoderSun 專有 JPEG 編碼器(已過時,見下方現代替代)
Font字型、樣式、大小設定
drawString(str, x, y)在 (x, y) 基線位置繪製文字

⚠️ 現代化改寫建議(Java 9+)

com.sun.image.codec.jpeg 為內部 API,已在 JDK 9 移除。請改用標準 javax.imageio.ImageIO:

// 替代輸出區塊
try (OutputStream out = new FileOutputStream("google.jpg")) {
    ImageIO.write(img, "JPEG", out);
}

進階擴充想法

  • 加入抗鋸齒:g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  • 漸層文字:g2d.setPaint(new GradientPaint(...));
  • 輸出 PNG(無損):ImageIO.write(img, "PNG", out);
  • 支援中文字型回退邏輯(Linux/伺服器環境常缺字型)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved