体育资讯网

您现在的位置是:首页 > 分类12 > 正文

分类12

makecode源码(makecode手机版)

hacker2022-06-09 03:41:19分类1271
本文目录一览:1、验证码图片制作验证码图片制作随机图片验证码的制作以前写的一个生成彩色验证码的例子。重载了makeCode()函数

本文目录一览:

验证码图片制作

随机图片验证码的制作

以前写的一个生成彩色验证码的例子。重载了makeCode()函数makecode源码,即可以生成本地图片,又可生成基于输出流的图片。

package smart.gui.util;

。。。

public class ColoredCodeMaker {

private final static String letterCollection =

"ABEFGHNRTabcdefghjkmnprstuvwxyz23456789";

private String randomStr = "";

private RenderedImage renderedImg = null;

public ColoredCodeMaker(int width, int height, int letterCount) {

init(letterCount);

makeRenderedImage(width, height);

}

public String makeCode(OutputStream os) {

String formatName = "JPEG";

try {

ImageIO.write(this.renderedImg, formatName, os);

}

catch (Exception ex) {

return "";

}

return randomStr;

}

public String makeCode(File outputFileName) {

String formatName = "JPEG";

try {

ImageIO.write(this.renderedImg, formatName, outputFileName);

}

catch (Exception ex) {

return "";

}

return randomStr;

}

private void makeRenderedImage(int width, int height) {

if (width = 0) {

width = 60;

}

if (height = 20) {

height = 20;

}

/**

* TYPE_INT_RGB Represents an image with 8-bit RGB color components packed into integer pixels.

* The image has a DirectColorModel without alpha.

*/

BufferedImage bufImage = new BufferedImage(width, height,

BufferedImage.TYPE_INT_RGB);

/**

* 获取图形上下文

*/

Graphics g = bufImage.createGraphics();

/**

* 设置背景色

*/

g.setColor(new Color(0xDCDCDC));

g.fillRect(0, 0, width, height);

/**

* 画边框

*/

g.setColor(Color.black);

g.drawRect(0,0,width-1,height-1);

/**

* 将认证码显示到图像中

*/

g.setColor(Color.black);

g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));

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

g.drawString(randomStr.charAt(i)+"", width/(randomStr.length()+2)*(i+1), height/2 + 10);

}

Random random = new Random();

for (int i = 0; i width/2; i++) {

int x = random.nextInt(width);

int y = random.nextInt(height);

g.drawOval(x,y,1,1);

}

g.dispose();

this.renderedImg = bufImage;

}

private void init(int letterCount) {

if (randomStr.length() != letterCount) {

randomStr = "";

for (int i = 0; i letterCount; i++) {

randomStr +=

letterCollection.charAt( (int) (letterCollection.length() *

Math.random()));

}

}

}

}

////////测试代码,图片宽150,高40,图片上共8个随机字符,保存在C盘下

ColoredCodeMaker ccm = new ColoredCodeMaker(150,40,8);

ccm.makeCode(new java.io.File("C:\\aaa.jpeg"));

----------------------------------------------------------------------------------------------------------------------------------------------用VB制作验证码生成器

算法设计

1.窗体设计

启动VB6并新建一个标准EXE工程,布置好控件并设置好名称。

接着将两个图片框的AutoRedraw属性设置成True,txt_inp、cmd_browse的Enabled属性设置为False,txt_inp的Maxlength属性设置成10。然后单击“工程→部件”,勾选“Microsoft CommonDialog Control 6.0”。

2.算法

加密过程是程序的重点。在这里makecode源码我们运用画线和画点函数来处理图片,在图片框上随机选两个点画直线,同时用随机函数确定它的颜色;再随机点一个点,同样用随机函数确定它的颜色。在这里我们还用随机取字体样式和背景色,不过要注意的是,背景和字体颜色的差别要搞大一些,由于每个RBG分量值越大颜色越深,因此我们用下面两条语句就可以增强颜色的对比度:

pic_las.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

pic_las.BackColor = RGB(Rnd * 55, Rnd * 55, Rnd * 55)

绘制图像的具体的代码如下:

Sub AddPas()

On Error GoTo Err1

pic_las.Print Space(10 - Len(Result)); Result

Dim x, y, x1, x2, i As Integer

'随机决定输出字体样式

pic_las.FontItalic = Int(Rnd * 2)

pic_las.FontUnderline = Int(Rnd * 2)

pic_las.ForeColor = RGB(Rnd * 155 + 100, Rnd * 155 + 100, Rnd * 155 + 100)

'为验证码添加随机直线

For i = 1 To (Int(Rnd(1) * 8) + 1)

x = Int(Rnd * pic_las.Width): y = Int(Rnd * pic_las.Height)

x1 = Int(Rnd * pic_las.Width): Y1 = Int(Rnd * pic_las.Height)

pic_las.Line (x, y)-(x1, Y1), RGB(Rnd * 255, Rnd * 255, Rnd * 255)

Next i

'为验证码随机添加圆点

For i = 1 To (Int(Rnd(1) * 200) + 100)

pic_las.PSet (pic_las.Width * Rnd, pic_las.Height * Rnd), _

RGB(Rnd * 255, Rnd * 255, Rnd * 255)

Next i

'写入输出文件

If chk_file.Value = 1 Then

SavePicture pic_las.Image, txt_outfile.Text

MsgBox "验证码已经保存在:" txt_outfile.Text, VBInformation

End If

Exit Sub

Err1: '产生了错误

MsgBox Err.Number ":" Err.Description, VBExclamation

End Sub

内容处理好了,接下来就只要简单响应用户的操作即可。在这里我们还需要解决随机生成验证码的问题,我们可以把需要生成的验证码每一位都放入一个字符串,再用随机函数以及字符串截取函数Mid(String,Start As Long,[Length])读入每一位验证码。另外为了增强程序的功能,我还允许用户保存和拷贝验证码以及允许用户自行定义验证码。由于版面有限,这里就不给出完整的源程序了,makecode源码你可以从下载到完整的源代码。

总结

运行一下程序,“加密”效果还不错吧。

这可不是一般的破解机器能识别得了的哦!当然你也可以将这个加密算法运用到你个人的程序和论坛上去,它为程序的安全性提供了很好的保证呢!

发表评论

评论列表

  • 囤梦绮筵(2022-06-09 12:31:43)回复取消回复

    eCode(File outputFileName) { String formatName = "JPEG"; try { ImageIO.write(this.renderedImg, forma

  • 瑰颈皆叹(2022-06-09 14:33:40)回复取消回复

    try { ImageIO.write(this.renderedImg, formatName, outputFileName);