|
@ -15,14 +15,16 @@ import java.io.File; |
|
|
import java.io.FileOutputStream; |
|
|
import java.io.FileOutputStream; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.HashMap; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 情报板生成图片工具 |
|
|
* 情报板生成图片工具 |
|
|
*/ |
|
|
*/ |
|
|
public class BoardImageUtils { |
|
|
public class BoardContentUtils { |
|
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(BoardImageUtils.class); |
|
|
private static final Logger log = LoggerFactory.getLogger(BoardContentUtils.class); |
|
|
|
|
|
|
|
|
//分辨率 宽度
|
|
|
//分辨率 宽度
|
|
|
private static final int width = 768; |
|
|
private static final int width = 768; |
|
@ -31,8 +33,8 @@ public class BoardImageUtils { |
|
|
private static final int height = 64; |
|
|
private static final int height = 64; |
|
|
|
|
|
|
|
|
//图标地址
|
|
|
//图标地址
|
|
|
private static final String templatePath = "D:\\ruoyi\\uploadPath\\boardTemplate"; |
|
|
// private static final String templatePath = "D:\\ruoyi\\uploadPath\\boardTemplate";
|
|
|
// private static final String templatePath = RuoYiConfig.getBoardPath();
|
|
|
private static final String templatePath = RuoYiConfig.getBoardPath(); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 事件场景 |
|
|
* 事件场景 |
|
@ -53,6 +55,15 @@ public class BoardImageUtils { |
|
|
//背景颜色
|
|
|
//背景颜色
|
|
|
g.setBackground(Color.BLACK); |
|
|
g.setBackground(Color.BLACK); |
|
|
|
|
|
|
|
|
|
|
|
list.add(ImageDTO.createImageDTO("前方5公里发生事故缓行10分钟",new Color(255,0,0),new Font("Default", Font.BOLD, 22), 34, 0)); |
|
|
|
|
|
|
|
|
|
|
|
//设置颜色
|
|
|
|
|
|
g.setColor(new Color(255,0,0)); |
|
|
|
|
|
//设置字体
|
|
|
|
|
|
g.setFont(new Font("Default", Font.BOLD, 22)); |
|
|
|
|
|
String text = "前方" + "公里发生事故"; |
|
|
|
|
|
g.drawString(text, 34, 0); //画出水印
|
|
|
|
|
|
|
|
|
//编辑图片,插入要素
|
|
|
//编辑图片,插入要素
|
|
|
for (ImageDTO imgDTO : list) { |
|
|
for (ImageDTO imgDTO : list) { |
|
|
if (imgDTO.getType() == 0) { |
|
|
if (imgDTO.getType() == 0) { |
|
@ -67,7 +78,7 @@ public class BoardImageUtils { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//事故图标
|
|
|
//事故图标
|
|
|
File srcImgFile = new File(templatePath + "/jinzhi.png");//得到文件
|
|
|
File srcImgFile = new File(templatePath + "/shigu.png");//得到文件
|
|
|
Image jinzhi = ImageIO.read(srcImgFile);//文件转化为图片
|
|
|
Image jinzhi = ImageIO.read(srcImgFile);//文件转化为图片
|
|
|
g.drawImage(jinzhi,534,17,30,30,null); |
|
|
g.drawImage(jinzhi,534,17,30,30,null); |
|
|
g.dispose(); |
|
|
g.dispose(); |
|
@ -158,6 +169,33 @@ public class BoardImageUtils { |
|
|
return AjaxResult.success(filePath); |
|
|
return AjaxResult.success(filePath); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 纯文字 |
|
|
|
|
|
* 固定格式 |
|
|
|
|
|
* |
|
|
|
|
|
* @param textList 文字列表 |
|
|
|
|
|
* @return 情报板内容 |
|
|
|
|
|
*/ |
|
|
|
|
|
public static AjaxResult writeText(List<String> textList) { |
|
|
|
|
|
List<Map<String,Object>> contentList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
for (String text : textList) { |
|
|
|
|
|
Map<String,Object> content = new HashMap<>(); |
|
|
|
|
|
content.put("ACTION","0"); |
|
|
|
|
|
content.put("COLOR","ffff00"); |
|
|
|
|
|
content.put("CONTENT",text); |
|
|
|
|
|
content.put("FONT","1"); |
|
|
|
|
|
content.put("SPEED","0"); |
|
|
|
|
|
content.put("STAY","50"); |
|
|
|
|
|
content.put("formatStyle","2"); |
|
|
|
|
|
content.put("height","64"); |
|
|
|
|
|
content.put("width","768"); |
|
|
|
|
|
contentList.add(content); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return AjaxResult.success(contentList); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* main方法: |
|
|
* main方法: |
|
@ -167,7 +205,7 @@ public class BoardImageUtils { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取数据集合;
|
|
|
//获取数据集合;
|
|
|
/*ArrayList<ImageDTO> list = new ArrayList<>(); |
|
|
ArrayList<ImageDTO> list = new ArrayList<>(); |
|
|
|
|
|
|
|
|
list.add(ImageDTO.createRectImageDTO(new Color(0,255,0), 34, 26, 300,16)); |
|
|
list.add(ImageDTO.createRectImageDTO(new Color(0,255,0), 34, 26, 300,16)); |
|
|
list.add(ImageDTO.createRectImageDTO(new Color(255,255,0), 334, 26, 150,16)); |
|
|
list.add(ImageDTO.createRectImageDTO(new Color(255,255,0), 334, 26, 150,16)); |
|
@ -176,18 +214,19 @@ public class BoardImageUtils { |
|
|
list.add(ImageDTO.createImageDTO("前方5公里发生事故缓行10分钟",new Color(255,0,0),new Font("Default", Font.BOLD, 22), 34, 0)); |
|
|
list.add(ImageDTO.createImageDTO("前方5公里发生事故缓行10分钟",new Color(255,0,0),new Font("Default", Font.BOLD, 22), 34, 0)); |
|
|
list.add(ImageDTO.createImageDTO("长清收费站约5分钟到达",new Color(255,255,255),new Font("Default", Font.BOLD, 12 ), 296, 51)); |
|
|
list.add(ImageDTO.createImageDTO("长清收费站约5分钟到达",new Color(255,255,255),new Font("Default", Font.BOLD, 12 ), 296, 51)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//事件场景
|
|
|
//事件场景
|
|
|
BoardImageUtils.writeEventImage(list);*/ |
|
|
BoardContentUtils.writeEventImage(list); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DcBoardImgLane boardImgLane = new DcBoardImgLane(BoardIconEnum.SPEED_LIMIT_120,BoardIconEnum.SPEED_LIMIT_120,BoardIconEnum.SPEED_LIMIT_100,BoardIconEnum.SPEED_LIMIT_100,BoardIconEnum.EMERGENCY_LANE); |
|
|
DcBoardImgLane boardImgLane = new DcBoardImgLane(BoardIconEnum.SPEED_LIMIT_120,BoardIconEnum.SPEED_LIMIT_120,BoardIconEnum.SPEED_LIMIT_100,BoardIconEnum.SPEED_LIMIT_100,BoardIconEnum.EMERGENCY_LANE); |
|
|
//车道通行场景
|
|
|
//车道通行场景
|
|
|
BoardImageUtils.writeLaneImage(boardImgLane); |
|
|
BoardContentUtils.writeLaneImage(boardImgLane); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boardImgLane = new DcBoardImgLane(BoardIconEnum.STRAIGHT_TRAVEL,BoardIconEnum.LEFT_DETOUR,BoardIconEnum.LANE_PROHIBITION,BoardIconEnum.RIGHT_DETOUR,BoardIconEnum.EMERGENCY_LANE); |
|
|
boardImgLane = new DcBoardImgLane(BoardIconEnum.STRAIGHT_TRAVEL,BoardIconEnum.LEFT_DETOUR,BoardIconEnum.LANE_PROHIBITION,BoardIconEnum.RIGHT_DETOUR,BoardIconEnum.EMERGENCY_LANE); |
|
|
//车道通行场景
|
|
|
//车道通行场景
|
|
|
BoardImageUtils.writeLaneImage(boardImgLane); |
|
|
BoardContentUtils.writeLaneImage(boardImgLane); |
|
|
//这句代码,自己项目中可以不用加,在这里防止main方法报错的;
|
|
|
//这句代码,自己项目中可以不用加,在这里防止main方法报错的;
|
|
|
System.exit(0); |
|
|
System.exit(0); |
|
|
} |
|
|
} |