Skip to content

Officia.Imaging — 图像处理与图片转 PDF

能力摘要(AI 友好)OfficiaImaging 做图像格式转换、缩放裁剪旋转翻转、滤镜(灰度/棕褐/反色/二值/海报化/模糊/锐化/亮度/对比度)、文字与图片水印,以及图片转 PDF。门面静态方法,纯 JDK(javax.imageio)实现。

引入

xml
<dependency>
  <groupId>plus.ruoyi</groupId>
  <artifactId>officia-all</artifactId>
  <version>1.0.0</version>
</dependency>

仅需图像能力时可单独引 officia-imaging

格式转换 / 几何变换

java
import plus.ruoyi.officia.imaging.OfficiaImaging;

byte[] png  = OfficiaImaging.convert(jpgBytes, "png");   // 格式转换(png/jpg/bmp/gif…)
byte[] small = OfficiaImaging.resize(png, 200, 100);      // 缩放到 200×100
byte[] cut  = OfficiaImaging.crop(png, 0, 0, 100, 100);   // 裁剪 (x,y,w,h)
byte[] rot  = OfficiaImaging.rotate(png, 90);             // 旋转(度,double)
byte[] fh   = OfficiaImaging.flipHorizontal(png);         // 水平翻转
byte[] fv   = OfficiaImaging.flipVertical(png);           // 垂直翻转

滤镜

java
byte[] gray = OfficiaImaging.grayscale(png);       // 灰度
byte[] sep  = OfficiaImaging.sepia(png);           // 棕褐(怀旧)
byte[] inv  = OfficiaImaging.invert(png);          // 反色
byte[] bin  = OfficiaImaging.binarize(png, 128);   // 二值化(阈值 0–255)
byte[] post = OfficiaImaging.posterize(png, 4);    // 海报化(色阶数)
byte[] blur = OfficiaImaging.blur(png, 3);         // 模糊(半径)
byte[] shp  = OfficiaImaging.sharpen(png);         // 锐化
byte[] br   = OfficiaImaging.brightness(png, 30);  // 亮度(增量,可负)
byte[] ct   = OfficiaImaging.contrast(png, 1.2f);  // 对比度(倍率)

水印

java
// 文字水印:(源, 文本, x, y, 字号, RGB 颜色, 不透明度 0–1)
byte[] tw = OfficiaImaging.textWatermark(png, "机密", 20, 40, 24f, 0xFF0000, 0.5f);

// 图片水印:(源, 水印图, x, y, 不透明度)
byte[] iw = OfficiaImaging.imageWatermark(png, logoPng, 10, 10, 0.6f);

图片 → PDF

java
byte[] pdf1 = OfficiaImaging.toPdf(png);                  // 单图 → 单页 PDF
byte[] pdf2 = OfficiaImaging.toPdf(List.of(img1, img2));  // 多图 → 多页 PDF

方法一览

分类方法
转换 / 几何convert(src, fmt) / resize(src,w,h) / crop(src,x,y,w,h) / rotate(src,deg) / flipHorizontal / flipVertical
滤镜grayscale / sepia / invert / binarize(src,threshold) / posterize(src,levels) / blur(src,radius) / sharpen / brightness(src,delta) / contrast(src,factor)
水印textWatermark(src,text,x,y,fontSize,rgb,opacity) / imageWatermark(src,wm,x,y,opacity)
转 PDFtoPdf(image) / toPdf(List)

常见问题

  • 颜色值textWatermarkrgb 是 24 位整型(如 0xFF0000 红),opacity0f–1f
  • JPEG 无透明:向 JPEG 转换会丢弃 alpha 通道;需保留透明用 PNG。