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) |
| 转 PDF | toPdf(image) / toPdf(List) |
常见问题
- 颜色值:
textWatermark的rgb是 24 位整型(如0xFF0000红),opacity为0f–1f。 - JPEG 无透明:向 JPEG 转换会丢弃 alpha 通道;需保留透明用 PNG。