我有以下代码:
Connection.Response captchaResponse = Jsoup.connect(CAPTCHA_URL)
.timeout(3000)
.cookies(cookies)
.userAgent("Mozilla/5.0")
.method(Method.GET)
.ignoreContentType(true)
.execute();
cookies.putAll(captchaResponse.cookies());
// writing captcha image to file
FileOutputStream fileWriter = new FileOutputStream(new File(CAPTCHA_FILENAME));
fileWriter.write(captchaResponse.bodyAsBytes());
fileWriter.close();
showImage(CAPTCHA_FILENAME,"captcha");
showImage
功能:
public void showImage(String filename,String title) throws IOException
{
ImageIcon icon = new ImageIcon(ImageIO.read(new File(filename)));
JFrame frame = new JFrame(title);
JLabel imageLabel = new JLabel();
imageLabel.setIcon(icon);
frame.add(imageLabel);
frame.setSize(100,100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
我有一个需要显示的验证码。为此,我将验证码存储在一个文件中并每次都读取该文件。有没有办法可以在不涉及文件的情况下做到这一点?
答案 0 :(得分:2)
您可以使用ByteArrayOutputStream
代替FileOutputStream
来存储验证码。然后:
ByteArrayInputStream imageInput=new ByteArrayInputStream(outputStream.toByteArray());
使用以下代码将您的ByteArrayOutputStream
转换为ByteArrayInputStream
showImage
中使用的代码:
ImageIO.read(imageInput);