当前位置: 首页 > wzjs >正文

网站首页界面设计网站导航条做多高

网站首页界面设计,网站导航条做多高,营销策划方案书,免费网站空间 国外这里记录下图片验证码的生成,方便日后自己回忆。 图片工具类 /*** 图片验证码工具类** author xiongxiaoyang* date 2022/5/17*/ UtilityClass public class ImgVerifyCodeUtils {/*** 随机产生只有数字的字符串*/private final String randNumber "0123456…

这里记录下图片验证码的生成,方便日后自己回忆。

图片工具类

/*** 图片验证码工具类** @author xiongxiaoyang* @date 2022/5/17*/
@UtilityClass
public class ImgVerifyCodeUtils {/*** 随机产生只有数字的字符串*/private final String randNumber = "0123456789";/*** 图片宽*/private final int width = 100;/*** 图片高*/private final int height = 38;private final Random random = new Random();/*** 获得字体*/private Font getFont() {return new Font("Fixed", Font.PLAIN, 23);}/*** 生成校验码图片*/public String genVerifyCodeImg(String verifyCode) throws IOException {// BufferedImage类是具有缓冲区的Image类,Image类是用于描述图像信息的类BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);// 产生Image对象的Graphics对象,改对象可以在图像上进行各种绘制操作Graphics g = image.getGraphics();//图片大小g.fillRect(0, 0, width, height);//字体大小//字体颜色g.setColor(new Color(204, 204, 204));// 绘制干扰线// 干扰线数量int lineSize = 40;for (int i = 0; i <= lineSize; i++) {drawLine(g);}// 绘制随机字符drawString(g, verifyCode);g.dispose();//将图片转换成Base64字符串ByteArrayOutputStream stream = new ByteArrayOutputStream();ImageIO.write(image, "JPEG", stream);return Base64.getEncoder().encodeToString(stream.toByteArray());}/*** 绘制字符串*/private void drawString(Graphics g, String verifyCode) {for (int i = 1; i <= verifyCode.length(); i++) {g.setFont(getFont());g.setColor(new Color(random.nextInt(101), random.nextInt(111), random.nextInt(121)));g.translate(random.nextInt(3), random.nextInt(3));g.drawString(String.valueOf(verifyCode.charAt(i - 1)), 13 * i, 23);}}/*** 绘制干扰线*/private void drawLine(Graphics g) {int x = random.nextInt(width);int y = random.nextInt(height);int xl = random.nextInt(13);int yl = random.nextInt(15);g.drawLine(x, y, x + xl, y + yl);}/*** 获取随机的校验码*/public String getRandomVerifyCode(int num) {int randNumberSize = randNumber.length();StringBuilder verifyCode = new StringBuilder();for (int i = 0; i < num; i++) {String rand = String.valueOf(randNumber.charAt(random.nextInt(randNumberSize)));verifyCode.append(rand);}return verifyCode.toString();}}

验证码管理类

/*** 验证码 管理类** @author xiongxiaoyang* @date 2022/5/12*/
@Component
@RequiredArgsConstructor
@Slf4j
public class VerifyCodeManager {private final StringRedisTemplate stringRedisTemplate;/*** 生成图形验证码,并放入 Redis 中*/public String genImgVerifyCode(String sessionId) throws IOException {String verifyCode = ImgVerifyCodeUtils.getRandomVerifyCode(4);String img = ImgVerifyCodeUtils.genVerifyCodeImg(verifyCode);stringRedisTemplate.opsForValue().set(CacheConsts.IMG_VERIFY_CODE_CACHE_KEY + sessionId, verifyCode, Duration.ofMinutes(5));return img;}/*** 校验图形验证码*/public boolean imgVerifyCodeOk(String sessionId, String verifyCode) {return Objects.equals(stringRedisTemplate.opsForValue().get(CacheConsts.IMG_VERIFY_CODE_CACHE_KEY + sessionId), verifyCode);}/*** 从 Redis 中删除验证码*/public void removeImgVerifyCode(String sessionId) {stringRedisTemplate.delete(CacheConsts.IMG_VERIFY_CODE_CACHE_KEY + sessionId);}

Service层


/*** 资源(图片/视频/文档)相关服务类** @author xiongxiaoyang* @date 2022/5/17*/
public interface ResourceService {/*** 获取图片验证码** @throws IOException 验证码图片生成失败* @return Base64编码的图片*/RestResp<ImgVerifyCodeRespDto> getImgVerifyCode() throws IOException;/*** 图片上传* @param file 需要上传的图片* @return 图片访问路径* */RestResp<String> uploadImage(MultipartFile file);
}

Service实现类


/*** 资源(图片/视频/文档)相关服务实现类** @author xiongxiaoyang* @date 2022/5/17*/
@Service
@RequiredArgsConstructor
@Slf4j
public class ResourceServiceImpl implements ResourceService {private final VerifyCodeManager verifyCodeManager;@Value("${novel.file.upload.path}")private String fileUploadPath;@Overridepublic RestResp<ImgVerifyCodeRespDto> getImgVerifyCode() throws IOException {String sessionId = IdWorker.get32UUID();return RestResp.ok(ImgVerifyCodeRespDto.builder().sessionId(sessionId).img(verifyCodeManager.genImgVerifyCode(sessionId)).build());}@SneakyThrows@Overridepublic RestResp<String> uploadImage(MultipartFile file) {LocalDateTime now = LocalDateTime.now();String savePath =SystemConfigConsts.IMAGE_UPLOAD_DIRECTORY+ now.format(DateTimeFormatter.ofPattern("yyyy")) + File.separator+ now.format(DateTimeFormatter.ofPattern("MM")) + File.separator+ now.format(DateTimeFormatter.ofPattern("dd"));String oriName = file.getOriginalFilename();assert oriName != null;String saveFileName = IdWorker.get32UUID() + oriName.substring(oriName.lastIndexOf("."));File saveFile = new File(fileUploadPath + savePath, saveFileName);if (!saveFile.getParentFile().exists()) {boolean isSuccess = saveFile.getParentFile().mkdirs();if (!isSuccess) {throw new BusinessException(ErrorCodeEnum.USER_UPLOAD_FILE_ERROR);}}file.transferTo(saveFile);if (Objects.isNull(ImageIO.read(saveFile))) {// 上传的文件不是图片Files.delete(saveFile.toPath());throw new BusinessException(ErrorCodeEnum.USER_UPLOAD_FILE_TYPE_NOT_MATCH);}return RestResp.ok(savePath + File.separator + saveFileName);}}

Controller层

/*** 前台门户-资源(图片/视频/文档)模块 API 控制器** @author xiongxiaoyang* @date 2022/5/17*/
@Tag(name = "ResourceController", description = "前台门户-资源模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_RESOURCE_URL_PREFIX)
@RequiredArgsConstructor
public class ResourceController {private final ResourceService resourceService;/*** 获取图片验证码接口*/@Operation(summary = "获取图片验证码接口")@GetMapping("img_verify_code")public RestResp<ImgVerifyCodeRespDto> getImgVerifyCode() throws IOException {return resourceService.getImgVerifyCode();}}

借助Hutool工具类

参考https://blog.csdn.net/weixin_47390965/article/details/126763759大佬所写。


文章转载自:

http://kohXGRn0.trtdg.cn
http://RQFkAUo5.trtdg.cn
http://iv7Kz45D.trtdg.cn
http://jxmlkY9P.trtdg.cn
http://JOuduhxX.trtdg.cn
http://0zfUqXjK.trtdg.cn
http://FOp7gkaC.trtdg.cn
http://3WVaCXUv.trtdg.cn
http://OqG1Jv0P.trtdg.cn
http://hAUyXWnr.trtdg.cn
http://CoTVqSAH.trtdg.cn
http://arfVPXO2.trtdg.cn
http://x5ZcsxTP.trtdg.cn
http://PpfL1UKo.trtdg.cn
http://tAvHdL4n.trtdg.cn
http://t6AwYLKd.trtdg.cn
http://hshUUhiD.trtdg.cn
http://3VhYu2Mh.trtdg.cn
http://VHgWZMnL.trtdg.cn
http://KlXKegeo.trtdg.cn
http://uZP0kNCr.trtdg.cn
http://xrhhQ72z.trtdg.cn
http://B5v9UoD7.trtdg.cn
http://1OOeRY0w.trtdg.cn
http://Vbv45I6J.trtdg.cn
http://CBhdWfRn.trtdg.cn
http://rVxE534t.trtdg.cn
http://GRrVFfu0.trtdg.cn
http://9C2J6PBI.trtdg.cn
http://rnxImP0L.trtdg.cn
http://www.dtcms.com/wzjs/668525.html

相关文章:

  • 大兴网站制作浙江建设继续教育网站
  • 效果图网站都有哪些?天津 网站优化
  • 石家庄网站建设方案咨询做的好的音乐网站的特点
  • 做网站树立品牌形象百度seo关键词排名优化工具
  • 天津企业网站建设公司jsp网站服务器如何做防护
  • 只做美食类目产品的网站设计本3d模型下载
  • 汉服网页设计作品seo引擎搜索网站
  • 无锡企业网站制作服务网站设计案例
  • 网站及新媒体帐号内容建设腾讯云建wordpress
  • 数字货币众筹网站开发广州网站推广建设
  • 备案期间网站能打开吗网页微信聊天电脑有记录吗
  • 管理网站建设哪里好wordpress最详细的教程视频教程
  • 顺德 网站设计国外网站国内备案
  • 河南省建设厅证件证件查询网站设计师网站哪个好
  • 西安企业网站建设公司html5网站搭建
  • 温州市永嘉上塘建设局网站茅台酒国内营销网络
  • 怎样查网站的注册地点废旧回收做哪个网站好
  • 网站创建公司哪家好网站建设报什么专业
  • iis7 无法添加网站陕西省建设厅官网查询
  • 怎样入门网站开发如何注册企业
  • 建网站前期设计用那软件零基础学建站
  • 长沙建站找有为太极环境遵wap企业网站源码
  • 做家教中介网站赚钱吗wordpress修改固定链接后404
  • 公司怎么搭建自己网站桂林人论坛风姿摄影
  • 福永附近网站建设公司可以免费视频的软件哪个最好
  • 建设网站的网站搜索引擎优化的基本原理
  • 网页设计作业电影介绍网站促销网站怎么做
  • 定制高端网站建设公司品牌策划公司一般有什么职位
  • 网站建设的优势何江导视设计论文
  • 成功的营销网站的例子设计公司排名前十强