AttachmngsController.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.ruoyi.web.controller.wx;
  2. import com.ruoyi.common.core.domain.AjaxResult;
  3. import com.ruoyi.common.utils.AddWatermarkUtil;
  4. import com.ruoyi.common.utils.SecurityUtils;
  5. import com.ruoyi.system.domain.AttachMngs;
  6. import com.ruoyi.system.service.IAttachMngsService;
  7. import net.coobird.thumbnailator.Thumbnails;
  8. import org.apache.commons.compress.utils.IOUtils;
  9. import org.apache.commons.fileupload.FileItem;
  10. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.http.MediaType;
  13. import org.springframework.web.bind.annotation.*;
  14. import org.springframework.web.multipart.MultipartFile;
  15. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  16. import javax.imageio.ImageIO;
  17. import javax.servlet.http.HttpServletRequest;
  18. import java.awt.*;
  19. import java.awt.font.FontRenderContext;
  20. import java.awt.font.TextLayout;
  21. import java.awt.geom.AffineTransform;
  22. import java.awt.image.BufferedImage;
  23. import java.io.*;
  24. import java.text.SimpleDateFormat;
  25. import java.util.Date;
  26. import java.util.Map;
  27. @RestController
  28. @RequestMapping("/attachmngs")
  29. public class AttachmngsController {
  30. @Autowired
  31. private IAttachMngsService attachMngsService;
  32. /**
  33. * 上传图片
  34. *
  35. * @param file 图片
  36. * @param longitude 经度
  37. * @param latitude 纬度
  38. * @return
  39. * @throws Exception
  40. */
  41. @PostMapping
  42. public AjaxResult updateAttachmngs(@RequestParam("avatarfile") MultipartFile file,
  43. @RequestParam("attachId") Long attachId,
  44. @RequestParam("longitude") String longitude,
  45. @RequestParam("latitude") String latitude,
  46. @RequestParam("updateDate") String date,
  47. HttpServletRequest request) throws Exception {
  48. if (file.isEmpty()) {
  49. return AjaxResult.error("上传失败请重试1");
  50. }
  51. System.out.println("水印时间");
  52. System.out.println(date);
  53. // 水印
  54. // String watermark = longitude + "," + latitude + "-" + date;
  55. String watermark = date;
  56. File file2 = AddWatermarkUtil.transferToFile(file);
  57. // addWaterMark(file2, file2, watermark);
  58. Thumbnails.of(file2)
  59. .scale(1f) //图片大小(长宽)压缩比例 从0-1,1表示原图
  60. .outputQuality(0.3f) //图片质量压缩比例 从0-1,越接近1质量越好
  61. .toFile(file2);
  62. // AddWatermarkUtil.waterPress(file2, file2, Color.DARK_GRAY, 48, watermark);
  63. AddWatermarkUtil.addWaterMark(file2, file2, Color.DARK_GRAY, 48, watermark);
  64. // 转二进制
  65. byte[] bytes = AddWatermarkUtil.fileToTransfer(file2).getBytes();
  66. // 存储到数据库
  67. AttachMngs attachMngs = new AttachMngs();
  68. attachMngs.setSysId(1L);
  69. attachMngs.setAttachId(attachId);
  70. attachMngs.setAttachFile(toObjects(bytes));
  71. Integer i = attachMngsService.insertAttachMngs(attachMngs);
  72. if (i != 1) {
  73. return AjaxResult.error("上传失败请重试2");
  74. }
  75. // 拼接url
  76. String serverName = request.getServerName();
  77. int serverPort = request.getServerPort();
  78. return AjaxResult.success("操作成功", "http://" + serverName + ":" + serverPort + "/attachmngs/img/" + attachId);
  79. }
  80. /**
  81. * 获取图片
  82. *
  83. * @param attachId
  84. * @return
  85. */
  86. @GetMapping(value = "/img/{attachId}", produces = MediaType.IMAGE_JPEG_VALUE)
  87. public byte[] getImg(@PathVariable("attachId") String attachId) {
  88. Byte[] img = attachMngsService.getImg(attachId);
  89. return toPrimitives(img);
  90. }
  91. private Byte[] toObjects(byte[] bytesPrim) {
  92. Byte[] bytes = new Byte[bytesPrim.length];
  93. int i = 0;
  94. for (byte b : bytesPrim) bytes[i++] = b; // Autoboxing
  95. return bytes;
  96. }
  97. private byte[] toPrimitives(Byte[] oBytes) {
  98. byte[] bytes = new byte[oBytes.length];
  99. for (int i = 0; i < oBytes.length; i++) {
  100. bytes[i] = oBytes[i];
  101. }
  102. return bytes;
  103. }
  104. }