JAVA 일회용 이미지 인증 코드 생 성
1.인증번호 생 성 클래스:
package com.easyteam;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class ImageCode {
int w=70;//
int h=35;//
Random r=new Random();
public BufferedImage CreateImage(){//
BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);//
Graphics gps=img.getGraphics();//
gps.setColor(new Color(240,240,240));//
gps.fillRect(0, 0, w, h);// ( )
return img;
}
public BufferedImage getImage(){//
BufferedImage img=CreateImage();
Graphics gps=img.getGraphics();//
//
for(int i=0;i<4;i++){
String ch=this.getContent();
gps.setColor(this.getColor());
gps.setFont(this.getFont());
gps.drawString(ch, w/4*i, h-5);//
}
drawLine(img);
return img;
}
public void saveImage(BufferedImage img,OutputStream out) throws IOException {
// f , :ImageIO.write(img,"JPEG",response.getOutputStream());
ImageIO.write(img, "JPEG", new FileOutputStream("F:\\a.jpg"));
}
//
String str="abcdefghijklmnupqrstuvwxyzABCDEFGHIJKLMNUPQRSTUVWZYZ1234567890";
public String getContent(){
int index=r.nextInt(str.length());
return str.charAt(index)+"";
}
String[] font={" "," "," "," "," "};//
int[] fontSize={24,25,26,27,28};//
int[] fontStyle={0,1,2,3};//
public Font getFont(){
int index1=r.nextInt(font.length);
String name=font[index1];
int style=r.nextInt(4);
int index2=r.nextInt(fontSize.length);
int size=fontSize[index2];
return new Font(name,style,size);
}
public Color getColor(){//
int R=r.nextInt(256);// 0-255
int G=r.nextInt(256);
int B=r.nextInt(256);
return new Color(R,G,B);
}
public void drawLine(BufferedImage img){//
Graphics2D gs=(Graphics2D) img.getGraphics();
gs.setColor(Color.BLACK);
gs.setStroke(new BasicStroke(1.5F));//
for(int i=0;i<5;i++){// ,
int x1=r.nextInt(w);
int y1=r.nextInt(h);
int x2=r.nextInt(w);
int y2=r.nextInt(h);
gs.drawLine(x1, y1, x2, y2);
}
}
}
2.테스트 클래스:
package com.easyteam;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
ImageCode imagecode=new ImageCode();
BufferedImage img=imagecode.getImage();
imagecode.saveImage(img, new FileOutputStream("F:\\a.jpg"));
}
}
실제 개발 에 서 는 그림 에 생 성 된 문 자 를 저장 한 뒤 세 션 대상 에 저장 해 야 한다.그림 을 얻 은 코드 를 변경 합 니 다.
public BufferedImage getImage(){//
BufferedImage img=CreateImage();
Graphics gps=img.getGraphics();//
StringBuilder sb=new StringBuilder();
//
for(int i=0;i<4;i++){
String ch=this.getContent();
sb.append(ch);
gps.setColor(this.getColor());
gps.setFont(this.getFont());
gps.drawString(ch, w/4*i, h-5);//
}
// Session , sb
drawLine(img);
return img;
}
추가:개발 중 생 성 될 수 있 는 인증 코드 가 잘 보이 지 않 습 니 다.한 장 바 꿔 야 합 니 다.그러나 일부 브 라 우 저 는 캐 시 가 있어 새로 고침 할 수 없습니다.이때 자바 Sctipt 코드 를 써 서 해결 합 니 다.
<script type="text/javascript">
function fun(){
1. id
2. new Date().gettime(); , 。
}
</script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.