分为3步
第一步 导入依赖 (谷歌的依赖)
第二步写配置类
注意这里用到的是googole的包 别导错包了
第三步 写contoller
import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Map; import java.util.concurrent.TimeUnit; @RestController @Slf4j public class CodeController { @Autowired Producer producer; @Autowired StringRedisTemplate stringRedisTemplate; public static final String CODE_PERFIX ="code"; @GetMapping("/getCode") public ResultVo getCode(){ //创建验证码 写入图片 String text =producer.createText(); //写入图片 BufferedImage image =producer.createImage(text); ByteArrayOutputStream outputStream =new ByteArrayOutputStream(); try { ImageIO.write(image,"jpeg",outputStream); } catch (IOException e) { log.error(e.getMessage(),e); return ResultVo.failed("验证码创建失败"); } String uuid = IdUtil.simpleUUID(); //写入Redis 1分钟过期 stringRedisTemplate.opsForValue() .set(CODE_PERFIX+uuid,text,1, TimeUnit.HOURS); String base64 = Base64.encode(outputStream.toByteArray()); String codeUrl ="data:image/jpeg;base64," + base64; Map<Object, Object> dataMap = MapUtil.builder() .put("uuid",uuid) .put("codeUrl",codeUrl) .build(); return ResultVo.success(dataMap); } }
完事~就这么简单~~~