文档库 最新最全的文档下载
当前位置:文档库 › java,gif,合成,拆分,jpg,图片生成

java,gif,合成,拆分,jpg,图片生成

java,gif,合成,拆分,jpg,图片生成
java,gif,合成,拆分,jpg,图片生成

java,gif,合成,拆分,jpg,图片生成

这几天一直在做图片处理,其中遇到了一些问题,在网上也找到了解决办法(虽然不是最佳的),在这里还是作个记录吧。

1 多张jpg图合成gif动画

/**

* 把多张jpg图片合成一张

* @param pic String[] 多个jpg文件名包含路径

* @param newPic String 生成的gif文件名包含路径

*/

private synchronized void jpgToGif(String pic[], String newPic) {

try {

AnimatedGifEncoder e = new AnimatedGifEncoder(); //网上可以找到此类 e.setRepeat(0);

e.start(newPic);

BufferedImage src[] = new BufferedImage[pic.length];

for (int i = 0; i < src.length; i++) {

e.setDelay(200); //设置播诺难映偈奔?/span>

src[i] = ImageIO.read(new File(pic[i])); // 读入需要播放的jpg文件

e.addFrame(src[i]); //添加到帧中

}

e.finish();

} catch (Exception e) {

System.out.println( "jpgToGif Failed:");

e.printStackTrace();

}

}

2 gif动画分解成多张jpg

/**

* 把gif图片按帧拆分成jpg图片

* @param gifName String 小gif图片(路径+名称)

* @param path String 生成小jpg图片的路径

* @return String[] 返回生成小jpg图片的名称

*/

private synchronized String[] splitGif(String gifName,String path) { try {

GifDecoder decoder = new GifDecoder();

decoder.read(gifName);

int n = decoder.getFrameCount(); //得到frame的个数

String[] subPic = new String[n];

String tag = this.getTag();

for (int i = 0; i < n; i++) {

BufferedImage frame = decoder.getFrame(i); //得到帧

//int delay = decoder.getDelay(i); //得到延迟时间

//生成小的JPG文件

subPic[i] = path + String.value(i)+ ".jpg"; FileOutputStream out = new FileOutputStream(subPic[i]);

ImageIO.write(frame, "jpeg", out);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(frame); //存盘

out.flush();

out.close();

}

return subPic;

} catch (Exception e) {

System.out.println( "splitGif Failed!");

e.printStackTrace();

return null;

}

3 根据提供的文字生成jpg图片

/**

* 根据提供的文字生成jpg图片

* @param s String 文字

* @param smallWidth int 每个字的宽度和高度是一样的

* @param bgcolor Color 背景色

* @param fontcolor Color 字色

* @param fontPath String 字体文件

* @param jpgname String jpg图片名

* @return

*/

private String createJpgByFont(String s, int smallWidth,Color bgcolor,Color fontcolor,String fontPath,String jpgname) {

try

{ //宽度高度

BufferedImage bimage = new

BufferedImage(s.length()*smallWidth,

smallWidth,BufferedImage.TYPE_INT_RGB);

Graphics2D g = bimage.createGraphics();

g.setColor(bgcolor); //背景色

g.fillRect(0, 0, smallWidth, smallWidth); //画一个矩形 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,Rend eringHints.VALUE_ANTIALIAS_ON); //去除锯齿(当设置的字体过大的时候,会出现锯齿)

g.setColor(fontcolor); //字的颜色

File file = new File(fontPath); //字体文件

Font font = Font.createFont(Font.TRUETYPE_FONT, file); //根据字体文件所在位置,创建新的字体对象(此语句在jdk1.5下面才支持)

g.setFont(font.deriveFont((float)

smallWidth)); //font.deriveFont(float f)复制当前 Font 对象并应用新设置字体的大小

g.drawString(s,0, smallWidth); //在指定坐标除添加文字

g.dispose();

FileOutputStream out = new FileOutputStream(jpgname); //指定输出文件 JPEGImageEncoder encoder =

JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage); param.setQuality(50f, true);

encoder.encode(bimage, param); //存盘

out.flush();

out.close();

} catch (Exception e) {

System.out.println( "createJpgByFont Failed!");

e.printStackTrace();

}

}

4 多张小jpg图合成一张大JPG图,在这里对大图只作宽度限制,不做高度限制/**

* 将多个小图片合成一张大jpg图 (小的jpg图片按照行列顺序平铺)

* @param smallJPG ArrayList 一组小的jpg图片

* @param bigWidth int 大图宽度

* @param smallWidth int 单个文字生成的小图的宽度和高度是一致的

* @return

*/

private void createBigJPG(ArrayList smallJPG, int bigWidth,

int smallHeigh,Color bgColor ,String picName) {

try {

if (bigWidth < smallWidth) //如果大图片的高度比小图片的高度还小直接返回

return;

int colCount = bigWidth / smallWidth; //每行放置的字数

int leftMargin = (int) ((bigWidth - colCount * smallWidth) / 2f); //左边距

int rowCount = smallJPG.size(); //小图行数

int setWidth = bigWidth; //每列中间不留空隙,只留左右边距 int setHeight = smallWidth * rowCount ;

//按照大图片宽高绘制一个背景图片

BufferedImage bufImage = new BufferedImage(setWidth, setHeight,

BufferedImage.TYPE_INT_RGB);

Graphics2D g = bufImage.createGraphics();

g.setColor(bgColor); //背景的颜色

g.fillRect(0, 0, setWidth, setHeight);

int y = 0; //纵坐标

for (int i = 0; i < rowCount; i++) { //遍历每行

ArrayList col = (ArrayList) (smallJPG.get(i));

int x = leftMargin; //横坐标可能会出现左边距

for (int j = 0; j < col.size(); j++) {

String jpgname = (String) (col.get(j));

ImageIcon icon = new ImageIcon(jpgname);

Image img = icon.getImage();

int imgWidth = img.getHeight(null);

g.drawImage(img, x, y, null);

x += imgWidth;

}

y += (smallWidth);

}

g.dispose();

FileOutputStream out = new FileOutputStream(picName); //指定输出文件 JPEGImageEncoder encoder =

JPEGCodec.createJPEGEncoder(out); //设置文件格式

JPEGEncodeParam param =

encoder.getDefaultJPEGEncodeParam(bufImage); //从图片缓冲中读取

param.setQuality(50f, true);

encoder.encode(bufImage, param); //存盘

out.flush();

out.close();

} catch (Exception e) {

System.out.println( "createBigJPG Failed!");

e.printStackTrace();

}

}

注:

(1)AnimatedGifEncoder和GifDecoder,以及这两个类涉及到的相关类,在网上搜索一下就可以找到。

(2)在linux系统下,如果你想支持更多系统外的字体,使用下面两句话,可以不用为系统添加字体,直接把字体文件拷贝到相应位置即可,但是需要jdk1.5环境。

File file = new File(fontPath); //字体文件

Font font = Font.createFont(Font.TRUETYPE_FONT, file); //根据字体文件所在位置,创建新的字体对象

如果是jdk1.5以下版本则需要为系统添加字体,因为createFont(int fontFormat, File fontFile)

这个方法,是从1.5才开始有的。

(3)g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints. VALUE_ANTIALIAS_ON);

我在测试中发现,当设置的字体过大的时候,会出现很明星的锯齿,后来在网上找到了这个解决方法。

Java登陆验证模块的实现及小结

登陆验证模块的实现 登陆页面验证首先是验证账号, 验证码是否填写,密码长度是否符合要求,验证码是否正确。这几个验证是通过自定义的几个$.fn扩展函数实现的($.fn.remote=Function(url,msg, msgCnt){})实现的,一般将这些自定义的函数放在一个js文件中,便于维护。 自定义函数一般包含相应的提示字符串,及节点对象$(“#id”)等参数。通过函数对节点的var value = this.val();value是否为空或空字符串的判断,相应的改变节点text属性的值。1验证码正确验证 1)验证码正确与否的验证是通过采用了Ajax技术的函数实现的。对应的action的result 的属性为json(result要配置ok的参数),action类要有布尔类型的名为ok的属性,通过返回值ok,更改相应的改变节点text属性的值。 如: $.fn.remote=function(url,msg,msgCnt){ var value=this.val();//获得表单提交的数据,如你所填入的验证码/资费名称 var name=this.attr("name");//获得表单名称,如验证码文本框的name:verifiCode var b=false; $.ajax({url:url+"?"+name+"="+value,dataTyp e:"json",async:false,success:function(data){ if(data){ $(msgCnt).text(""); b=true; }else{ $(msgCnt).text(msg); } } }); return b; }; 2)验证码的点击更新是利用了result=stream的属性(要配置name="inputName",name="contentType"的参数),点击发送请求,对应的action(该类必须有InputStream类的属性,且名字要和result相应参数的属性值相同)生成验证码并存入session。 2账户和密码的验证 当前面一系列的验证结果都满足条件时,才能提交表单。可定义一个函数实现:if(b1 && b2 && b4) {$("#loginForm").submit();} 相应action 接受到数据后,根据账户和密码调用DAO的相关方法,查询返回admin。 如果admin存在则转发到主页面(通过result在admin的不同状态下返回的字符串实现不同的type="redirectAction"),此时将admin存入session。为后面的登陆检查验证做准备。 session.put(KEY_ADMIN, admin); 如果不存在就,还是停留在登陆页面。 3检查登陆验证。 为了防止未登录而访问数据,通过struts2的自定义拦截器功能实现登陆检查验证。 可通过实现接口Interceptor或者抽象类AbstractInterceptor,我选择继承AbstractIntercepto,相对较简洁。在接口定义的方法intercept(ActionInvocation in)实现验证

自动生成验证码图片的工具类,收藏起来备用。

[原]自动生成验证码图片的工具类,收藏起来备用。用法:直接调用其静态方法即可。 Map map = ImageUtil.getImage();//获取图片,将图片转换成InputStream流 String key = map.keySet().iterator().next();//获取图片上的字符 BufferedImage image = map.get(key);//获取BufferedImage,赋值给imageStream其中,String为验证码的值,BufferedImage为验证码的图片。 该工具类的代码如下:ImageUtil.java package action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; public final class ImageUtil { private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "东", "南", "西", "北", "中", "发", "白" }; private static final int SIZE = 5;//验证码长度 private static final int LINES = 20;//干扰线条数 private static final int WIDTH = 200;//图片宽度 private static final int HEIGHT = 100;//图片高度 private static final int FONT_SIZE = 60;//字体高度 public static Map getImage() { StringBuffer sb = new StringBuffer(); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics graphic = image.getGraphics(); graphic.setColor(Color.LIGHT_GRAY); graphic.fillRect(0, 0, WIDTH, HEIGHT); Random ran = new Random(); //画随机字符 for(int i=1;i<=SIZE;i++){ int r = ran.nextInt(chars.length); graphic.setColor(getRandomColor()); graphic.setFont(new Font(null,Font.BOLD+Font.ITALIC,FONT_SIZE));

《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

c#生成验证码的方法

新建一个WaterMark.ASHX文件,将如下代码Copy进去 <%@ WebHandler Language="C#" Class="WaterMark" %> using System; using System.Web; using System.Drawing; using System.Drawing.Drawing2D; using System.Web.SessionState; public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间 { public void ProcessRequest(HttpContext context) { string checkCode = GenCode(5); // 产生5位随机字符 context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证 System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); // 画图片的背景噪音线 int i; for (i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true); g.DrawString(checkCode, font, brush, 2, 2);

jsp页面验证码源代码

jsp页面验证码源代码 在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。 程序结构图: VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下: package utils; import java.awt.Color; import java.awt.Font;

import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; publicclass VerifyCodeUtils { privatestatic BufferedImage image = null; privatestatic Random random = new Random(); //在自己定义的一些数中,生成4位随机数 publicstatic String getVerifyCode() { String str = ""; char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U', 'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t', 'u','v','w','x','y','z','2','3','4','5','6','7','8','9'}; Random random = new Random(); for(int i = 0; i <4; i++) { str += String.valueOf(code[random.nextInt(code.length)]); } return str; }

java日志与验证码

java日志: 日志的网上很多也: https://www.wendangku.net/doc/7112537391.html,/view/ccb3ce1efc4ffe473368abdf.html 你自己看看。我们的系统里面一般都是自己写了一个程序。将用户的操作信息,IP,时间,操作内容写入我们数据库里面。 Tomcat的日志一般我们用绿色版,它自带有日志功能。 java验证码: 1 根据一个随机值,生成一个模糊图片,然后将随机值封装到session中。 1.1 生成图片的类: package com.framework.security; import java.awt.*; import java.awt.image.BufferedImage; import java.io.Serializable; import java.util.Random; /** *随机验证码 *User: *Date:2006-11-2 *Time:11:31:00 *To change this template use File|Settings|File Templates. */ public class ImgCheckCode implements Serializable { private String charRandomCode = ""; private BufferedImage imageRandomCode; private int width; private int height; public ImgCheckCode(int width, int height) { this.width = width; this.height = height; create(4); } public ImgCheckCode(int width, int height, int length) { this.width = width; this.height = height;

javaWeb实现验证码

java web中验证码的实现 分类:JavaWeb编程2012-05-05 14:37 473人阅读评论(0) 收藏举报下面就利用Servlet +JSP+JavaBran实现一个验证码机制。 BufferedImage 可以操作缓冲区的内部Image,可以被ImageIO输出到输出流中,我们就是利用PrintWriter可以想浏览器输出信息的原理我们输出Image图片。 1、产生验证码的类MakePicture [java]view plaincopyprint? 1.package me.test; 2.import java.awt.Graphics; 3.import java.awt.Font; 4.import java.awt.Color; 5.import java.awt.image.BufferedImage; 6.import javax.imageio.ImageIO; 7.import java.util.Random; 8.import java.io.OutputStream; 9.import java.io.IOException; 10.public class MakePicture //产生识别验证图像 11.{ 12. private char charTable[]={ 13. 'a','A','b','B','c','C','d','D' ,'e','E' , 14. 'f','F','g','G','h','H','i','I','j','J' , 15. '0','1','2','3','4','5','6','7','8','9' 16. }; 17. public String drawPicture(int width,int height,OutputStream os) 18. { 19. if(width<=0) 20. width=100 ; 21. if(height<=0)

登录校验,生成随机图形验证码

package com.env.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class RandomValidateCode { public static final String RANDOMCODEKEY = "RANDOMVALIDATECODEKEY";//放到session 中的key private Random random = new Random(); private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生的字符串 private int width = 80;//图片宽 private int height = 26;//图片高 private int lineSize = 40;//干扰线数量 private int stringNum = 4;//随机产生字符数量 /* * 获得字体 */ private Font getFont(){ return new Font("Fixedsys",Font.CENTER_BASELINE,18); } /* * 获得颜色 */ private Color getRandColor(int fc,int bc){ if(fc > 255) fc = 255; if(bc > 255) bc = 255; int r = fc + random.nextInt(bc-fc-16); int g = fc + random.nextInt(bc-fc-14); int b = fc + random.nextInt(bc-fc-18); return new Color(r,g,b); }

验证码图片不能正常显示的一个原因

验证码技术的实现按如下步骤: 1、设计一个验证码生成类RandomImageGenerator.java import java.awt.*; import java.awt.image.*; import java.io.*; import javax.imageio.ImageIO; public class RandomImageGenerator { final static int LENGTH=4; static Color colors[]={Color.red,Color.black,Color.blue,Color.pink,Color.cyan}; public static String random() {//创建一个4位的验证码字符串 String str="1234567890ABCDEFGHIJKLMNOPORSTUVWXYZabcefghijklmnopqrstuvwxyz",r and=""; java.util.Random random=new java.util.Random(); for(int i=0;i

生成随机的5位登录验证码

生成随机的5位登录验证码 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; static String code=""; publicclass checkService { publicvoid checkCode(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ //绘制画布 BufferedImage bf=new BufferedImage(80,30,BufferedImage.TYPE_INT_BGR); //获得画笔 Graphics g=bf.getGraphics(); //给画笔设置颜色 g.setColor(new Color(255,255,255)); //填充背景色 g.fillRect(0, 0, 80, 30); //随机获得前景色 Random r=new Random(); g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255))); //设置字体 Font f=new Font("",Font.BOLD,22); //获得字体 g.setFont(f); //以当前颜色和字体绘制干扰线 checkService.code=checkService.getstr(); g.drawString(checkService.code,10,25); for(int i=0;i<10;i++){ g.drawLine(r.nextInt(80), r.nextInt(30), r.nextInt(80), r.nextInt(30));

JS实现验证码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ImgServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1:声明图片大小 int width = 60; int height = 25; // 2:生成内存中的图片 BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 3:获取画笔 Graphics g = img.getGraphics(); g.setColor(new Color(226, 239, 247)); // 4:画背景 g.fillRect(0, 0, width, height); // 5:设置字体、大小 g.setFont(new Font("宋体", Font.BOLD, 18)); // 6:生成四个数 String sCode = ""; Random r = new Random(); for (int i = 0; i < 4; i++) { int a = r.nextInt(10); // 写出这个数 Color c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)); g.setColor(c); g.drawString("" + a, i * 15, 24); sCode += a; } // 放到session中 request.getSession().setAttribute("scode", sCode);

Java版CRC16-ModBus校验码

package com.crc16.test; publicclass CRC16M { //定义常量 privatestaticfinal String HEXES = "0123456789ABCDEF"; privatebyte uchCRCHi = (byte) 0xFF; privatebyte uchCRCLo = (byte) 0xFF; privatestaticbyte[] auchCRCHi = { 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00,

验证码生成器

packagecom.lizhou.tools; importjava.awt.Color; importjava.awt.Font; importjava.awt.Graphics; import java.awt.Graphics2D; importjava.awt.image.BufferedImage; importjava.util.Random; /** * 验证码生成器 * * @author bojiangzhou */ public class VCodeGenerator { /** * 验证码来源 */ final private char[] code = { '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; /** * 字体 */ final private String[] fontNames = new String[]{ "黑体", "宋体", "Courier", "Arial", "Verdana", "Times", "Tahoma", "Georgia"}; /** * 字体样式 */ final private int[] fontStyles = new int[]{ Font.BOLD, Font.ITALIC|Font.BOLD }; /** * 验证码长度 * 默认4个字符 */

NET和JAVA实现MOD37 36校验码计算

按照 MOD3736规则计算校验码: .NET版本: ///

/// 计算标识校验码 /// /// 标识码前段 /// private static string GetCertificateSourceIdCode(string ValueCode) { string Code = ValueCode.Replace("." string.Empty).ToUpper(); Dictionary dict = new Dictionary(); dict.Add("0" 0); dict.Add("1" 1); dict.Add("2" 2); dict.Add("3" 3); dict.Add("4" 4); dict.Add("5" 5); dict.Add("6" 6); dict.Add("7" 7); dict.Add("8" 8); dict.Add("9" 9); dict.Add("A" 10); dict.Add("B" 11); dict.Add("C" 12); dict.Add("D" 13); dict.Add("E" 14); dict.Add("F" 15); dict.Add("G" 16); dict.Add("H" 17); dict.Add("I" 18); dict.Add("J" 19); dict.Add("K" 20); dict.Add("L" 21); dict.Add("M" 22); dict.Add("N" 23); dict.Add("O" 24); dict.Add("P" 25); dict.Add("Q" 26); dict.Add("R" 27); dict.Add("S" 28); dict.Add("T" 29); dict.Add("U" 30); dict.Add("V" 31); dict.Add("W" 32); dict.Add("X" 33); dict.Add("Y" 34); dict.Add("Z" 35);

图片验证码生成Servlet源代码

图片验证码生成: 摆渡恋人 Web.xml文件配置: This is the description of my J2EE component This is the display name of my J2EE component ImageCheckServlet check.servlet.ImageCheckServlet width 800 height 400 codeCount 4 ImageCheckServlet /servlet/ImageCheckServlet Package check.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO;

使用JAVA生成四位随机验证码图片

使用JAVA生成四位随机验证码图片 效果:是第一位和第三位是随机数字,第二位和第四位是随机字母,图片中还有随机干扰线,这些数字,字母,干扰线的颜色均随机 package cn.itcast.web.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.awt.image.BufferedImageOp; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //生成验证码图片 public class Demo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { int WIDTH = 100; int HIGHT = 30; //在内在中创建一幅图片 BufferedImage image = new BufferedImage(WIDTH,HIGHT,BufferedImage.TYPE_INT_RGB); //取得一个画笔 Graphics g = image.getGraphics(); //设置字符串格式 g.setFont(new Font("黑体",Font.BOLD,24)); //画干扰线 for(int i=0;i<7;i++){ Random r = new Random(); int x1 = r.nextInt(WIDTH); int x2 = r.nextInt(WIDTH); int y1 = r.nextInt(HIGHT); int y2 = r.nextInt(HIGHT); Color color = new Color( (new Double(Math.random() * 128)).intValue() + 128, (new Double(Math.random() * 128)).intValue() + 128, (new Double(Math.random() * 128)).intValue() + 128); g.setColor(color); g.drawLine(x1, y1, x2, y2);

相关文档