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

Java 實作相簿自動生成工具:縮圖產生與 HTML 輸出完整教學

     編輯:Java 相關知識

想快速將資料夾內的大量照片轉成網頁相簿?這個 Java 工具類 Zoom 示範如何批次讀取 JPG/JPEG 影像、依比例產生縮圖、並自動輸出包含超連結的 HTML 相簿頁面。程式碼簡潔無依賴,僅使用 JDK 內建 com.sun.image.codec.jpeg 編解碼器,適合快速整合至專案或作為學習影像處理範例。

功能流程

  1. 掃描指定目錄下所有 .jpg/.jpeg 檔案(getFiles())。
  2. 建立 zoom 子目錄存放縮圖(mkdirs())。
  3. 逐張讀取原圖,以 0.12 倍縮放繪製至 BufferedImage,並編碼輸出為 zooms_原檔名.jpg(zoom())。
  4. 同步組裝 HTML 字串:每三張換行(<tr>),產生縮圖連結指向原圖,滑鼠點擊可在新分頁開啟大圖。
  5. 最後在來源目錄寫入 index.html,完成相簿發布(outputHtmlFile())。

核心程式碼解析

縮圖產生邏輯

float zoom = 0.12F;
int w = (int) (imageFile.getWidth() * zoom);
int h = (int) (imageFile.getHeight() * zoom);
BufferedImage bufImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics g = bufImage.getGraphics();
g.drawImage(imageFile, 0, 0, w, h, new ImageObserver() {
    public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
        return true;
    }
});
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bufImage);

使用 ImageObserver 匿名類別確保圖片繪製完成再編碼,避免縮圖不全。

HTML 表格自動排版

int row = count % 3;
if (row == 0) html.append("\n\t");
html.append("\n\t\t
").append(input.getName()).append("
"); if (row == 2) html.append("\n\t");

採用模 3 餘數控制列數,產生整齊的三欄相簿佈局。

使用方式

編譯後以命令列執行:

java Zoom 圖片目錄絕對路徑

程式會在該目錄下建立 zoom/ 資料夾與 index.html,直接用瀏覽器開啟即可瀏覽相簿。

擴充建議

  • 支援 PNG、GIF 等格式(改用 ImageIO)。
  • 加入 EXIF 方向自動修正、縮圖品質參數調整。
  • 整合 Velocity/FreeMarker 模板引擎分離 HTML 結構。
  • 增加分頁、搜尋、標籤等相簿進階功能。

完整原始碼已包含於本文,可直接複製使用或根據需求修改。

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