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();
}
}
}
| 類別/方法 | 用途 |
|---|---|
BufferedImage | 記憶體中可繪圖的影像緩衝區 |
Graphics2D | 進階 2D 繪圖上下文(抗鋸齒、描邊、字型、仿射變換) |
JPEGImageEncoder | Sun 專有 JPEG 編碼器(已過時,見下方現代替代) |
Font | 字型、樣式、大小設定 |
drawString(str, x, y) | 在 (x, y) 基線位置繪製文字 |
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(...));ImageIO.write(img, "PNG", out);