注册 | 登录
欢迎注册会员

当前位置:首页 > 软件编程 > JAVA技术 > 正文

JAVA:附加码生成器(图片)

来源:程序人生 【 】 浏览:199 添加日期:2010-05-28 02:01:27 我要评论(0)

〔Picture.java〕

package creator.common.attachLogin;

import java.io.*;

public class Picture{

? final int key=1;

? final String error_format_int= "format of color is not rgb.sample \"212|232|0\"";

? final String error_color_input="format of color(num|num|num): num in 0-255";

? /**格式化输出数据**/

? public String manage(String temp){

??? String returnStr="";

??? temp = encrypt(temp);

??? byte[] by =temp.getBytes();

??? for(int i=0;i<>

????? returnStr=returnStr+(byte)by[i]+"|";

??? }

??? return returnStr;

? }

? /**格式化输入数据**/

? public byte[] disManage(String temp){

??? int len=0,index=0,i=0,first=0;

??? while(( i=temp.indexOf("|",first))>-1){

????? len++;

????? first=i+1;

??? }

??? byte[] by=new byte[len];

??? first=0;

??? while(( i=temp.indexOf("|",first))>-1){

???? by[index]=Byte.parseByte(temp.substring(first,i));

???? index++;

???? first=i+1;

??? }

??? return by;

? }

?/**随机生成四位的附加码**/

?public String getRandom(){

??? int i1 = (int)(java.lang.Math.random()*10);

??? int i2 = (int)(java.lang.Math.random()*10);

??? int i3 = (int)(java.lang.Math.random()*10);

??? int i4 = (int)(java.lang.Math.random()*10);

??? return String.valueOf(i1)+String.valueOf(i2)+String.valueOf(i3)+String.valueOf(i4);

? }

? /**加密1:错位处理**/

? public String encrypt(String randomStr){

???? String para=random()+randomStr.substring(0,1)+random()+random()+randomStr.substring(1,2);

??????????? para= para+random()+randomStr.substring(2);

???? return jiaMi(para);

? }

? /**得到随机数0-9之间**/

? private String random(){

??? String temp = String.valueOf((int)(java.lang.Math.random()*10));

??? return temp;

? }

? /**加密2:加密处理,此方法可以自己修改**/

? private String jiaMi(String str){

??? byte[] by = str.getBytes();

??? ByteArrayInputStream in = new ByteArrayInputStream(by);

??? int ch;

??? int index=0;

??? byte[] temp = new byte[in.available()];

??? while((ch=in.read())!=-1){

????? temp[index]=(byte)(ch-key);

????? index++;

??? }

??? ByteArrayInputStream ins = new ByteArrayInputStream(temp);

??? BufferedReader fReader = new BufferedReader(new InputStreamReader(ins));


??? try{ return? fReader.readLine();}catch(Exception e){return "";}

? }

? /**从给的数字里得到正确的数字**/

? public String discrypt(String temp){

??? String para = jieMi(disManage(temp));

??? return para.substring(1,2)+para.substring(4,5)+ para.substring(6,8);

? }

? /**解密处理**/

? private String jieMi(byte[] by){

??? ByteArrayInputStream in = new ByteArrayInputStream(by);

??? int ch;

??? int index=0;

??? byte[] temp = new byte[in.available()];

??? while((ch=in.read())!=-1){

????? temp[index]=(byte)(ch+key);

????? index++;

??? }

??? ByteArrayInputStream ins = new ByteArrayInputStream(temp);

??? BufferedReader fReader = new BufferedReader(new InputStreamReader(ins));

?? try{ return fReader.readLine();}catch(Exception e){return "";}

? }

? /**分解rgb格式的颜色 num|num|num**/

? public int[] masterData(String temp){

??? int index_len=0,index=0,next_index=0;

??? int[] return_arr=new int[3];

??? boolean break_error=false;

??? if(getMax(temp,"|")==2){

????? while((index_len=temp.indexOf("|",next_index))>-1){

??????? if(getInt(temp.substring(next_index,index_len))==256){

????????? break_error = true;

??????? }else{

????????? return_arr[index]=getInt(temp.substring(next_index,index_len));

????????? next_index=index_len+1;

????????? index++;

??????? }

??????? if(break_error) break;

????? }

????? if(break_error){

??????? return null;

????? }else{

??????? return_arr[index] = getInt(temp.substring(next_index));

??????? return return_arr;

????? }

??? }else{

????? System.out.println(error_format_int+":"+temp);

????? return null;

??? }

? }

? private int getMax(String temp,String temp2){

??? int index=0,index_len=0,index_next=0;

??? while((index=temp.indexOf(temp2,index_next))>-1){

????? index_len++;

????? index_next=index+1;

??? }

??? return index_len;

? }

? private int getInt(String temp){

??? try{

?????? return Integer.parseInt(temp);

??? }catch(Exception e){

?????? System.out.println(error_color_input+":"+temp);

?????? return 256;

??? }

? }

}

〔CreateImage.java〕

package creator.common.attachLogin;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.awt.*;

import java.awt.image.*;

import java.awt.image.BufferedImage;

import com.sun.image.codec.jpeg.*;

import com.sun.image.codec.jpeg.JPEGCodec;

public class CreateImage extends HttpServlet {

? static final private String CONTENT_TYPE = "text/html; charset=gb2312";

? final String input_back_color_error="input rgb backcolor is error";

? final String input_fore_color_error="input rgb forecolor is error";

? private Picture pic = new Picture();


? //Initialize global variables

? public void init() throws ServletException {

? }

? //Process the HTTP Get request

? public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
??? //生成图片
??? try{
????? int imageWidth = 60;
????? int imageHeight = 20;

????? BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
????? Graphics graphics = image.getGraphics();
????? graphics.setColor(Color.white);
????? graphics.fillRect(0,0,imageWidth,imageHeight);
????? graphics.setColor(Color.white);


????? FileOutputStream fos = new FileOutputStream("attach.jpg");
????? BufferedOutputStream bos = new BufferedOutputStream(fos);
????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
????? encoder.encode(image);
????? bos.close();

??? }catch(Exception e){
????? System.out.println("生成图片出错!");
??? }

??? String queryNum?? = request.getParameter("Image");

??? String queryRgb="";

??? if(request.getParameter("Rgb")!=null){

?????? queryRgb?? = request.getParameter("Rgb");

??? }

??? response.setHeader("Cache-Control","no-store");

??? response.setContentType("image/jpeg");

??? ServletOutputStream out=response.getOutputStream();

??? //jpg格式的背景色图片(于页面风格一样),宽3.6毫米,高1.8毫米

??? InputStream imageIn = new FileInputStream(new File("attach.jpg"));

??? JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);

??? BufferedImage image4 = decoder.decodeAsBufferedImage();

??? queryNum = pic.discrypt(queryNum);

??? Graphics g = image4.getGraphics();

??? if(queryRgb.length()>1){

????? if(pic.masterData(queryRgb)!=null){

??????? int[] arg = pic.masterData(queryRgb);

??????? g.setColor(new Color(arg[0],arg[1],arg[2]));

????? }

??? }else{

????? g.setColor(new Color(255,0,0));

??? }

??? g.drawString(queryNum,0,13);

??? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

??? encoder.encode(image4);

??? out.close();

? }

}

〔web.xml〕


?
??? CreateImage
??? javabean.com.CreateImage
?

?
??? CreateImage
??? /servlet/CreateImage
?

〔index.jsp〕

<%@page contentType="text/html; charset=gb2312" %>
<%@page import="javabean.com.Picture"%>
<%
? Picture pic = new Picture();
? String random =pic.getRandom();
? String encryRandom= pic.manage(random );
%>


登陆窗口



??????

附加码:
??????


??????




你浏览的文章是 - 《JAVA:附加码生成器(图片)》!
文章出处:https://www.procedurelife.com/content/hbldj.html
0% (0)
0% (0)
评论0
头像 游客
1 2