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

Java 圖像處理工具類 ImageUtils 完整指南

     編輯:Java 相關知識

概述

ImageUtils 是一個功能豐富的 Java 圖像處理工具類,採用單例模式,提供縮放、切割、旋轉、翻轉、水印(文字/圖片)、灰度化、格式轉換、切片等核心功能,基於 java.awt 和 javax.imageio 實現。

核心功能一覽

功能類別代表方法說明
縮放scaleToFile, scaleByPercentage, scaleByPixelRate, scaleByPixel支持按文件、百分比、最大寬高比例、固定尺寸縮放,啟用抗鋸齒與高質量渲染
切割cut (多重載)支持指定座標/寬高切割、九宮格定位切割,可選填充白邊
旋轉/翻轉rotateImage, flipHorizontalImage, flipVerticalImage任意角度旋轉、水平/垂直鏡像翻轉
水印waterMark, textMark, pressText, pressImage圖片水印、文字水印,支持透明度、字體、顏色、位置自定義
色彩轉換toGray彩色轉灰度,支持 BufferedImage 與文件級操作
格式轉換convert支持 GIF/JPG/PNG/BMP 互轉
切片cut (rows/cols)將圖像按行列切分為多塊小圖

關鍵實現細節

高質量縮放

所有縮放方法均啟用 RenderingHints.KEY_INTERPOLATION 和 VALUE_RENDER_QUALITY,並使用 Graphics2D.drawImage 繪製,而非直接用 Image.getScaledInstance,確保輸出質量。

透明度處理

水印功能通過 AlphaComposite.SRC_ATOP 實現疊加,alpha 參數控制 0.1f~1.0f 透明度。

單例模式

private static ImageUtils instance;
private ImageUtils() { instance = this; }
public static ImageUtils getInstance() {
    if (instance == null) instance = new ImageUtils();
    return instance;
}

文件級便捷方法

如 pressText、pressImage、toGray(String, String, String) 直接接受文件路徑,內部處理讀寫流,適合快速集成。

使用示例

// 文字水印
ImageUtils.getInstance().pressText(
    "版權所有", "src.jpg", "dest.jpg",
    "微軟雅黑", Font.BOLD, Color.RED, 30, 0, 0, 0.5f, "jpg"
);

// 圖片縮放並轉格式
ImageUtils.getInstance().scaleToFile("src.png", "thumb.jpg", 200, 200, "jpg");

注意事項

  • 所有 Graphics2D 對象使用後需調用 dispose() 釋放資源。
  • 文件輸出目錄不存在時會自動創建。
  • 切片功能使用舊版 CropImageFilter,現代項目可考慮改用 BufferedImage.getSubimage。

結語

ImageUtils 封裝了企業級開發中最常見的圖像處理需求,代碼結構清晰,可直接納入項目或作為二次開發基礎。

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