700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 对上传的图片进行等比例压缩

对上传的图片进行等比例压缩

时间:2022-12-31 23:52:36

相关推荐

对上传的图片进行等比例压缩

/*** 修改系统Logo* @param file* @param systemBasicConfigurationDTO*/@PutMapping(value = "/updateSystemLogo")@ApiOperation(value = "修改系统Logo", notes = "修改系统Logo的接口")public R updateSystemLogo(MultipartFile file, SystemBasicConfigurationDTO systemBasicConfigurationDTO) {try {SystemBasicConfiguration systemBasicConfiguration = new SystemBasicConfiguration();BeanUtils.copyProperties(systemBasicConfigurationDTO, systemBasicConfiguration);String systemConfigurationKey = systemBasicConfiguration.getConfigKey();InputStream input = file.getInputStream();Long imgaeSize = file.getSize();if (imgaeSize > 4 * 1024 * 1024) {return R.error().msg("图片超过4M大小");}//按比例压缩图片InputStream result = reduceImg(input, "upload.png", 0.5);SystemBasicConfiguration sbc = new SystemBasicConfiguration();sbc.setConfigKey(systemConfigurationKey);EntityWrapper<SystemBasicConfiguration> wrapper = new EntityWrapper<>();wrapper.setEntity(sbc);systemBasicConfiguration.setConfigValue(Image2Base64Utils.imgFileToBase64(result));systemBasicConfigurationService.update(systemBasicConfiguration, wrapper);return R.ok().data("成功修改系统Logo");} catch (Exception e) {return R.error().msg(e.getMessage());}}/*** @description 按比例压缩图片* @param is 源图片流* @param imgdist 图片名字* @param rate压缩比例* @return*/public static InputStream reduceImg(InputStream is, String imgdist, Double rate) {try {int widthdist = 0;int heightdist = 0;BufferedImage sourceImg = ImageIO.read(is);widthdist = (int) (sourceImg.getWidth() * rate);heightdist = (int) (sourceImg.getHeight() * rate);// 开始读取文件并进行压缩BufferedImage tag = new BufferedImage((int) widthdist, (int) heightdist, BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(sourceImg.getScaledInstance(widthdist, heightdist, Image.SCALE_SMOOTH), 0, 0, null);FileOutputStream out = new FileOutputStream(imgdist);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag);out.close();File srcfile = new File(imgdist);InputStream result = new FileInputStream(srcfile);return result;} catch (IOException ex) {ex.printStackTrace();}return null;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。