DrawImageController.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package controller;
  2. import config.Config;
  3. import config.subConfig.AxisConfig;
  4. import config.subConfig.DoorConfig;
  5. import config.subConfig.TemplateConfig;
  6. import model.Axis;
  7. import model.Door;
  8. import model.ModuleInAxis;
  9. import model.Room;
  10. import utils.TemplateUtils;
  11. import utils.YmlUtils;
  12. import javax.imageio.ImageIO;
  13. import java.awt.*;
  14. import java.awt.image.BufferedImage;
  15. import java.io.File;
  16. import java.io.IOException;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. /**
  20. * @author duh
  21. * @create 2018/7/27 13:30
  22. * @email duh@elab-plus.com
  23. **/
  24. public class DrawImageController {
  25. private static Config config = YmlUtils.readYml();
  26. /**
  27. * 画在panel中
  28. */
  29. public static void saveImage(List<Integer> position) {
  30. AxisConfig axisConfig = config.getAxisPoint();
  31. int length = axisConfig.getLength() + axisConfig.getX() + 500;
  32. int width = axisConfig.getY() + 500;
  33. BufferedImage bufferedImage = new BufferedImage(length,
  34. width, BufferedImage.TYPE_INT_RGB);
  35. Graphics2D g2d = bufferedImage.createGraphics();
  36. drawImageContent(position, g2d);
  37. try {
  38. ImageIO.write(bufferedImage, "jpeg", new File("E:\\config\\jpanel" + getImageNameByPosition(position) + ".jpg"));
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. private static void drawImageContent(List<Integer> position, Graphics g) {
  44. ModuleInAxis.setAxisPointConfig(config.getAxisPoint());
  45. // drawAxis(config, g);
  46. Room room = new Room(config.getRoom());
  47. drawRoom(room, g);
  48. drawImageTemplate(room, position, g);
  49. TemplateUtils.setTemplateIndex(0);
  50. }
  51. /**
  52. * 画坐标系
  53. *
  54. * @param config
  55. * @param g
  56. */
  57. private static void drawAxis(Config config, Graphics g) {
  58. Axis axis = new Axis();
  59. AxisConfig axisConfig = config.getAxisPoint();
  60. //ModuleInAxis已设置坐标轴的偏转
  61. axis.setX(0);
  62. axis.setY(0);
  63. axis.setxLength(axisConfig.getLength());
  64. axis.setyLength(axisConfig.getWidth());
  65. axis.setxSpacing(axisConfig.getxSpacing());
  66. axis.setySpacing(axisConfig.getySpacing());
  67. // System.out.println("axis3 x="+axis.getX());
  68. axis.drawSelf(g);
  69. }
  70. private static void drawRoom(Room room, Graphics g) {
  71. room.drawSelf(g);
  72. DoorConfig doorConfig = config.getDoor();
  73. Door door = new Door();
  74. door.setConfig(doorConfig);
  75. door.setRoom(room);
  76. door.drawSelf(g);
  77. }
  78. private static void drawImageTemplate(Room room, List<Integer> position, Graphics g) {
  79. List<TemplateConfig> templateList = config.getTemplates();
  80. TemplateUtils.setRoom(room);
  81. TemplateUtils.drawTemplateWithArray(position, templateList, g);
  82. }
  83. private static String getImageNameByPosition(List<Integer> position){
  84. StringBuffer sb = new StringBuffer();
  85. position.forEach(x->sb.append(x));
  86. return sb.toString();
  87. }
  88. public static void main(String[] args) {
  89. //
  90. List<Integer> position = new ArrayList<>();
  91. position.add(321);
  92. position.add(312);
  93. position.add(932);
  94. saveImage(position);
  95. }
  96. }