package com.objecteye.utils; import org.apache.commons.codec.binary.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Component public class HttpClientUtils { @Value("${requestUrl}") private String requestUrl; @Value("${requestPath}") private String picPath; @Autowired private VehicleEngine vehicleEngine; public String VehicleAnalysis(String TPXX) { String result = VehicleAnalysis("", TPXX, "", ""); return result; } //通过图片路径获取图片中车辆数据 public String VehicleAnalysis(String GCXH, String TPXX, String MRHPT, String HPHM) { RestTemplate restTemplate = new RestTemplate(); // HttpHeaders headers = new HttpHeaders(); // headers.add("Content-Type", "application/json;charset=UTF-8");//标准Header // HttpEntity httpEntity = new HttpEntity<>(headers); Map uriVariables = new HashMap<>(); uriVariables.put("GCXH", GCXH); if (TPXX != null || TPXX.length() > 0) { uriVariables.put("TPXX", TPXX); } else { uriVariables.put("TPXX", "/software/sy/vehicle-socket/c++/image/test.jpg"); } uriVariables.put("MRHPT", MRHPT); uriVariables.put("HPHM", HPHM); ResponseEntity responseEntity = restTemplate.postForEntity(requestUrl, uriVariables, String.class); String body = responseEntity.getBody(); return body; } //获取临时上传的图片数据信息 public String VehicleAnalysisTmp(MultipartFile TPXX) { String analysis = VehicleAnalysisTmp("", TPXX, "", ""); return analysis; } //获取临时上传的图片数据信息 public String VehicleAnalysisTmp(String GCXH, MultipartFile TPXX, String MRHPT, String HPHM) { String fileName = TPXX.getOriginalFilename();//name // String tempFilePath = System.getProperty("java.io.tmpdir") + "/" + fileName; String tempFilePath = null; if (picPath.endsWith("/") || picPath.endsWith("\\")) { tempFilePath = picPath + fileName; } else { tempFilePath = picPath + "/" + fileName; } File tempFile = new File(tempFilePath); try { TPXX.transferTo(tempFile);//生成临时文件 } catch (IOException e) { e.printStackTrace(); } String analysis = VehicleAnalysis(GCXH, tempFile.getAbsolutePath(), MRHPT, HPHM); tempFile.delete();//删除临时文件文件 return analysis; } public String MultipartFileToBase64(MultipartFile file) throws Exception { String base64EncoderImg = file.getOriginalFilename() + "," + Base64.encodeBase64String(file.getBytes()); String[] split = base64EncoderImg.split(","); String split1 = split[1]; return split1.replaceAll("\r\n|\r|\n", ""); } //将multipart文件转成车型对象 public String multiToVehicle(MultipartFile picfile) { String vehicleInfoByBase64 = null; try { String base64 = MultipartFileToBase64(picfile); vehicleInfoByBase64 = vehicleEngine.getVehicleInfoByBase64(base64); } catch (Exception e) { e.printStackTrace(); } return vehicleInfoByBase64; } //将multipart文件转成车型对象 public String multiToHumanVehicle(MultipartFile picfile) { String vehicleInfoByBase64 = null; try { String base64 = MultipartFileToBase64(picfile); vehicleInfoByBase64 = vehicleEngine.getHumanVehicleInfoByBase64(base64); } catch (Exception e) { e.printStackTrace(); } return vehicleInfoByBase64; } /** * @param base64String base64码字符串 **/ public BufferedImage changeBase64StringtoImage(String base64String) { BufferedImage buffer = null; try { byte[] bytes = Base64.decodeBase64(base64String); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); buffer = ImageIO.read(bais); } catch (IOException e) { e.printStackTrace(); } return buffer; } public String multiToPeople(MultipartFile picfile) { String peopleInfoByBase64 = null; try { String base64 = MultipartFileToBase64(picfile); peopleInfoByBase64 = vehicleEngine.getPeopleInfoByBase64(base64); } catch (Exception e) { e.printStackTrace(); } return peopleInfoByBase64; } }