使用java实现图片上增加图片和文字等操作。
- 使用思路是在一张底图上进行图片覆盖和增加文字
- 图片方面实现坐标、尺寸修改、圆角等功能。为了解决性能问题增加了图片缓存。同时使用弱引用解决OOM。保证了效率和安全性
- 文字方面实现坐标、字体、颜色、居中等功能。解决了emoji表情符显示异常的问题,实现和前端类似的文字过长隐藏为“…”
- 对于可能会扩展的功能点,带有TODO进行备注
package cn.dong.processing;
import cn.dong.processing.bo.ImageUnit;
import cn.dong.processing.bo.TxtUnit;
import cn.dong.processing.bo.UnitInfo;
import cn.dong.processing.worker.WorkerExecute;
import java.util.ArrayList;
import java.util.List;
/**
*
* @Author: dong
* @Date: 2023/4/13 14:15
*/
public class TestClass {
public static void main(String[] args) {
ImageUnit main = new ImageUnit();
// main.setResourceType(2);
// main.setValue("C:\\Users\\14910\\Desktop\\ditu.png");
main.setValue("https://img-blog.csdnimg.cn/7f4381f6318b4cf6bdcc01900e3c9b23.png");
// 设置覆盖的图片
ImageUnit tu1 = new ImageUnit();
// tu1.setResourceType(2);
// tu1.setValue("C:\\Users\\14910\\Desktop\\tu1.png");
tu1.setValue("https://profile.csdnimg.cn/1/D/5/1_weixin_42645678");
tu1.setRadius(720);
tu1.setX(50);
tu1.setY(50);
List<UnitInfo> list = new ArrayList<>();
list.add(tu1);
// 设置文字
TxtUnit txtUnit = new TxtUnit();
// 昵称😄
txtUnit.setValue("昵称\uD83D\uDE04");
txtUnit.setSize(20);
txtUnit.setX(100);
txtUnit.setY(200);
list.add(txtUnit);
WorkerExecute.overlayImage(main,list,"C:\\Users\\14910\\Desktop\\tu2.png");
}
}