图片文件与字节数组字符串转换(Base64编码解码)1.将图片文件转换为字节数组字符串,并进行Base64编码。ParametersimgFile:Imagefile//将图片文件转换为字节数组字符串,并对其进行Base64编码publicstaticStringimageToBase64ByLocal(StringimgFile){try{InputStreamin=null;字节[]数据=空;//读取图像字节数组in=newFileInputStream(imgFile);data=newbyte[in.available()];在.read(数据);附寄();//对字节数组进行Base64编码BASE64Encoderencoder=newBASE64Encoder();//返回Base64编码的字节数组字符Stringreturnencoder.encode(data);}catch(IOExceptione){System.out.println(e);}返回空值;}运行结果:2.将字节数组字符串转为图片文件并进行Base64解码参数imgStr:待转换的字节数组字符串参数imgFilePath:转换后图片的存储地址publicstaticbooleanbase64ToImage(StringimgStr,StringimgFilePath){//Base64解码字节数组字符串并生成图像//图像数据为空if(isEmpty(imgStr)){returnfalse;}尝试{BASE64Decoderdecoder=newBASE64Decoder();//Base64解码byte[]b=decoder.decodeBuffer(imgStr);for(inti=0;i>upload(MultipartFilemultipartFile){BaseResponsebaseResponse=newBaseResponse();尝试{字节[]图片Bbytes=multipartFile.getBytes();Stringbase64Str=newString(org.apache.commons.codec.binary.Base64.encodeBase64(picBbytes),"utf-8");StringpicUrl=getUploadPicUrl(base64Str);Mapmap=newHashMap<>();if(picUrl!=null){map.put("picUrl",picUrl);map.put("picName",multipartFile.getOriginalFilename());baseResponse.setData(地图);baseResponse.setMsg("图片上传成功");baseResponse.setCode("0");返回基础响应;}}catch(IOExceptione){logger.error("错误代码:{},错误信息:{},记录:{}",DefaultErrorCode.PIC_UPLOAD_ERROR.getCode(),DefaultErrorCode.PIC_UPLOAD_ERROR.getMessage(),e);}baseResponse.setMsg(DefaultErrorCode.PIC_UPLOAD_ERROR.getMessage());baseResponse.setCode("-1");返回基础响应;}/***将图片存储到云端*@parampicBase64*@return*/publicStringgetUploadPicUrl(StringpicBase64){try{picBase64=picBase64.replaceFirst("data:image/jpg;base64,","");byte[]picBuff=Base64.decode(picBase64);HikCStorConstantcStorConstant=getStorageDeviceList();//logger.debug("获取存储设备信息列表:"+cStorConstant.getDeviceIP());if(cStorConstant!=null){if(poolInfo==null){poolInfo=getPoolInfoList(cStorConstant.getDeviceID());}//logger.debug("获取资源池:"+poolInfo);if(poolInfo!=null){//logger.debug("图片准备上传到云存储");cStorConstant.setPoolId(poolInfo.getPoolId());cStorConstant.setSerialID(cStorConstant.getDeviceID());StringsecretKey=newString(AESSO.decrypt(java.util.Base64.getDecoder().decode(cStorConstant.getSecretKey()),Authentication.exportSK(),false),"UTF-8");//logger.debug("图片上传云存储secretKey:"+secretKey);cStorConstant.setSecretKey(secretKey.trim());StringpicUrl=hikCStorUtil.writePic(cStorConstant,picBuff);logger.debug("图片上传云存储URL:"+picUrl);返回"http://"+cStorConstant.getDeviceIP()+":"+String.valueOf(cStorConstant.getPicDownloadPort())+picUrl;}}}catch(Exceptione){logger.error("getUploadPicUrl错误:",e);}返回空值;}/**获取服务信息*/publicServiceAddressInfoDtofindServiceInfo(){ServiceAddressInfoDtoserviceAddressInfoDto=null;尝试{ApiResponseserviceInfo=serviceDirectoryClient.getServiceInfo("sac","sac");如果(serviceInfo.getCode().equals("0")){如果(!org.apache.commons.lang3.ObjectUtils.isEmpty(serviceInfo.getData())&&serviceInfo.getData().getAddress().size()>0){for(ServiceAddressInfoDto:serviceInfo.getData().getAddress()){if(dto.getNetprotocol().toLowerCase().equals("http")){serviceAddressInfoDto=dto;休息;}}serviceAddressInfoDto=serviceInfo.getData().getAddress().get(0);if(serviceAddressInfoDto==null){serviceAddressInfoDto=serviceInfo.getData().getAddress().get(0);}}}}catch(Exceptione){logger.error("findServiceInfoerror:",e);}返回serviceAddressInfoDto;}/***获取存储设备信息列表*@return*@throwsException*/publicHikCStorConstantgetStorageDeviceList()throwsException{Stringuri="/ISAPI/Storage/storageDeviceList?marker=&maxKeys=3000";ServiceAddressInfoDtodto=findServiceInfo();字符串url=null;if(dto!=null){StringsacUrl="http://"+dto.getIp()+":"+dto.getPort();url=sacUrl+uri;}StringsecretKey=newString(Authentication.exportSK(),"UTF-8");StringaccessKey=newString(Authentication.exportAK(),"UTF-8");字符串日期=DateGMCUtil.getGmtTime();Stringauth=AuthProcess.getAuthorization(accessKey,secretKey,"GET","","",date,uri,1,"storage");HttpHeadershttpHeaders=newHttpHeaders();httpHeaders.set("日期",日期);httpHeaders.set("授权",auth);httpHeaders.set("连接","关闭");httpHeaders.setAccept(Lists.newArrayList(MediaType.APPLICATION_JSON));HttpEntityhttpEntity=newHttpEntity(httpHeaders);响应实体<String>entity=myRestTemplates.exchange(URI.create(url),HttpMethod.GET,httpEntity,String.class);if(entity!=null&&entity.getStatusCode()==HttpStatus.OK){ResourceDeviceInfodeviceInfo=JSONObject.parseObject(entity.getBody(),ResourceDeviceInfo.class);for(HikCStorConstantcStorConstant:deviceInfo.getList()){/**deviceType:1-云存储,2-CVR,3-PCNVR2.0,4-NVR*/if(cStorConstant.getPicDownloadPort()!=0&&cStorConstant.getPicUploadPort()!=0/*&&cStorConstant.getDeviceType()==1*/){returncStorConstant;}}}返回空值;}/***获取资源池*@return*@throwsException*/publicPoolInfogetPoolInfoList(StringdeviceId)throwsException{Stringuri="/ISAPI/Storage/poolInfoList?marker=&maxKeys=3000";ServiceAddressInfoDtodto=findServiceInfo();小号特林网址=空;if(dto!=null){StringsacUrl="http://"+dto.getIp()+":"+dto.getPort();url=sacUrl+uri;}StringsecretKey=newString(Authentication.exportSK(),"UTF-8");StringaccessKey=newString(Authentication.exportAK(),"UTF-8");字符串日期=DateGMCUtil.getGmtTime();Stringauth=AuthProcess.getAuthorization(accessKey,secretKey,"GET","","",date,uri,1,"storage");HttpHeadershttpHeaders=newHttpHeaders();httpHeaders.set("日期",日期);httpHeaders.set("授权",auth);httpHeaders.set("X-Stor-DeviceID",deviceId);httpHeaders.set("连接","关闭");httpHeaders.setAccept(Lists.newArrayList(MediaType.APPLICATION_JSON));HttpEntityhttpEntity=newHttpEntity(httpHeaders);RestTemplatemyRestTemplate=newRestTemplate();ResponseEntity实体ty=myRestTemplate.exchange(URI.create(url),HttpMethod.GET,httpEntity,String.class);if(entity.getStatusCode()==HttpStatus.OK){ResourcePoolInfopoolInfo=JSONObject.parseObject(entity.getBody(),ResourcePoolInfo.class);布尔isExist=false;for(PoolInfopool:poolInfo.getList()){//0-通用池1-视频池3-图片池if(pool.getPoolType()==0&&pool.getPoolStatus()==1){//是否有图片资源池isExist=true;返回池;}}if(!isExist){for(PoolInfopool:poolInfo.getList()){//0-通用池1-视频池3-图片池if(pool.getCoverType()==0&&pool.getPoolType()==0&&"1".equals(pool.getDeviceType())&&pool.getPoolStatus()==1){//不能覆盖公共资源池returnpool;}}}}返回空值;}测试: