2013-06-21 199 views
0

我试图显示随机图片基于随机()方法的一代(只是想尝试像captcha)。我从数组中生成随机数,但不知道如何映射这些不与图像。有任何想法吗 ?我到目前为止所做的:使用java显示随机图片

import java.util.Arrays; import java.util.Random;

公共类Gen_Captcha {

static String[] myCaptchaLetters = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"}; 
Gen_Captcha captcha= new Gen_Captcha(); 
public static void main(String[] args) { 
    Random randomGenerator = new Random(); 
    for(int i=0;i<5;i++){ 
     int random = randomGenerator.nextInt(62); 
     System.out.print((myCaptchaLetters[random]));  
    } 

} 

}

}

注:上述代码不包括在摆动框架代码以显示图像。

回答

1

但是不知道如何映射这些没有与图像

不映射数字,字母映射:

Map<String, Image> images = new HashMap<String, Image>(); 
images.put("a", imageA); 
images.put("b", imageB); 
+0

好的谢谢。我会尝试使用hashmap –

1

你可能想看看Graphics.drawString()

您可以通过创建BufferedImage 来获得一个graphics2D对象。请注意,还有一些方法可以更改字体。 对于更高级的验证码,您可以使用相同的api将图像扭曲并在其上绘制随机内容。

2

创建一个List<BufferedImage>,并使用Collections.shuffle()随机化列表。使用列表的迭代器将随机访问图像而不会重复。

+0

听起来不错。但是,我认为这将只给出图像列表,并且不会有与其相关的元素。以防万一我想让用户输入他在图像中看到的no.s或字母,我无法验证用户输入。如果我错了,请纠正我。 –

+1

除了通过其迭代器访问列表外,您还可以通过索引或引用来访问它。而不是'List ',随机播放一个'List ',每个包含字母和图像的MyClass实例。使用第一个_n_元素作为键。 – trashgod