/** * Generates a backround image on wich text will be paste. Implementations must take into account the imageHeigt and * imageWidth. * * @return the background image */ BufferedImage getBackground() { return background.getBackground(); }
/** * @return the generated image height */ public int getImageHeight() { return background.getImageHeight(); }
/** * @return teh generated image width */ public int getImageWidth() { return background.getImageWidth(); }
background = new FileReaderRandomBackgroundGenerator(new Integer(m_settings.getImageWidth()), new Integer( m_settings.getImageHeight()), OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebApplication( "resources/captchabackgrounds/")); background = new UniColorBackgroundGenerator(new Integer(m_settings.getImageWidth()), new Integer( m_settings.getImageHeight()), m_settings.getBackgroundColor());
/** * Produces a {@link WordToImage} that is identical to the one used in {@link GmailEngine} */ private WordToImage createWord2Image() { return new DeformedComposedWordToImage( false, createFontGenerator(), new UniColorBackgroundGenerator(200, 70, Color.white), createTextPaster(), new ArrayList<ImageDeformation>(), new ArrayList<ImageDeformation>(), createFinalDeformations()); }
public static void main(String[] args) throws IOException { TextPaster paster = new SimpleTextPaster(new Integer(8), new Integer(8), Color.white); BackgroundGenerator back = new FileReaderRandomBackgroundGenerator( new Integer(200), new Integer(100), "/gimpybackgrounds"); FontGenerator font = new TwistedAndShearedRandomFontGenerator( new Integer(30), null); WordGenerator words = new DummyWordGenerator("JCAPTCHA"); WordToImage word2image = new ComposedWordToImage(font, back, paster); ImageCaptchaFactory factory = new GimpyFactory(words, word2image); ImageCaptcha pix = factory.getImageCaptcha(); ImageToFile.serialize(pix.getImageChallenge(), new File(args[0])); } }
BufferedImage bi = new BufferedImage(getImageWidth(), getImageHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) bi.getGraphics(); RenderingHints.VALUE_ANTIALIAS_ON); for (int variableOnWidth = 0; variableOnWidth < getImageWidth(); variableOnWidth = variableOnWidth + this.getSpaceBetweenLine()) Color secondRectangleColor = this.secondRectangleColorGenerator .getNextColor(); for (int variableOnHeight = 0; variableOnHeight < getImageHeight(); variableOnHeight = variableOnHeight + this.getSpaceBetweenCircle()) { Ellipse2D e2 = new Ellipse2D.Double(variableOnWidth, variableOnHeight, this .getEllipseWidth(), this.getEllipseHeight()); GradientPaint gp = new GradientPaint(0, this.getEllipseHeight(), firstEllipseColor, this .getEllipseWidth(), 0, secondEllipseColor, true); GradientPaint gp2 = new GradientPaint(0, getImageHeight(), firstRectangleColor, this.getRectangleWidth(), 0, secondRectangleColor, true); g2.setPaint(gp2); Rectangle2D r2 = new Rectangle2D.Double(variableOnWidth, 0, this .getRectangleWidth(), getImageHeight()); g2.fill(r2);
public FileReaderRandomBackgroundGenerator(Integer width, Integer height, String rootPath) { super(width, height); if (rootPath != null) this.rootPath = rootPath; File dir = findDirectory(this.rootPath); File[] files = dir.listFiles(); //get all jpeg if (files != null) { for (File file : files) { BufferedImage out = null; if (file.isFile()) { out = getImage(file); } if (out != null) { images.add(images.size(), out); } } if (images.size() != 0) { for (int i = 0; i < images.size(); i++) { BufferedImage bufferedImage = (BufferedImage) images.get(i); images.set(i, tile(bufferedImage)); } } else { throw new CaptchaException("Root path directory is valid but " + "does not contains any image (jpg) files"); } } }
Color colorRightDown = colorGeneratorRightDown.getNextColor(); BufferedImage bimgTP = new BufferedImage(getImageWidth(), getImageHeight(), BufferedImage.TYPE_INT_BGR); Graphics2D g2d = bimgTP.createGraphics(); g2d.setColor(Color.white); g2d.fillRect(0, 0, getImageHeight(), getImageWidth()); float height = getImageHeight(); float width = getImageWidth(); for (int j = 0; j < getImageHeight(); j++) { for (int i = 0; i < getImageWidth(); i++) { float leftUpRatio = (1 - i / width) * (1 - j / height); float leftDownRatio = (1 - i / width) * (j / height); blue, 1.0f)); else g2d.setColor(new Color(compute(red), compute(green), compute(blue), 1.0f)); g2d.drawLine(i, j, i, j);
private BufferedImage tile(BufferedImage tileImage) { BufferedImage image = new BufferedImage(getImageWidth(), getImageHeight(), tileImage.getType()); Graphics2D g2 = (Graphics2D) image.getGraphics(); int NumberX = (getImageWidth() / tileImage.getWidth()); int NumberY = (getImageHeight() / tileImage.getHeight()); for (int k = 0; k <= NumberY; k++) { for (int l = 0; l <= NumberX; l++) { g2.drawImage(tileImage, l * tileImage.getWidth(), k * tileImage.getHeight(), Math.min(tileImage.getWidth(), getImageWidth()), Math.min(tileImage.getHeight(), getImageHeight()), null); } } g2.dispose(); return image; }
/** * Generates a backround image on wich text will be paste. Implementations must take into account the imageHeigt and * imageWidth. * * @return the background image */ public BufferedImage getBackground() { backround = new BufferedImage(getImageWidth(), getImageHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D pie = (Graphics2D) backround.getGraphics(); Color color = colorGenerator.getNextColor(); pie.setColor(color != null ? color : Color.white); pie.setBackground(color != null ? color : Color.white); pie.fillRect(0, 0, getImageWidth(), getImageHeight()); pie.dispose(); return backround; } }
/** * Generates a backround image on wich text will be paste. Implementations must take into account the imageHeigt and * imageWidth. * * @return the background image */ public BufferedImage getBackground() { BufferedImage bi = new BufferedImage(getImageWidth(), getImageHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D pie = (Graphics2D) bi.getGraphics(); pie.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); GradientPaint gp = new GradientPaint(0, getImageHeight(), firstColor.getNextColor(), getImageWidth(), 0, secondColor.getNextColor()); pie.setPaint(gp); pie.fillRect(0, 0, getImageWidth(), getImageHeight()); pie.dispose(); return bi; } }
BufferedImage bimgTP = new BufferedImage(getImageWidth(), getImageHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = bimgTP.createGraphics(); g2d.setComposite(ac); g2d.translate(getImageWidth() * -1.0, 0.0); double delta = 5.0; double xt; double ts = 0.0; for (xt = 0.0; xt < (2.0 * getImageWidth()); xt += delta) { Arc2D arc = new Arc2D.Double(0, 0, getImageWidth(), getImageHeight(), 0.0, 360.0, Arc2D.OPEN); g2d.draw(arc); g2d.translate(delta, 0.0);
protected void buildInitialFactories() { com.octo.captcha.component.word.wordgenerator.WordGenerator wordGenerator = new com.octo.captcha.component.word.wordgenerator.RandomWordGenerator( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); TextPaster textPaster = new RandomTextPaster(new Integer(5), new Integer(8), Color.white); BackgroundGenerator backgroundGenerator = new FunkyBackgroundGenerator( new Integer(200), new Integer(100)); FontGenerator fontGenerator = new TwistedAndShearedRandomFontGenerator( new Integer(25), new Integer(30)); com.octo.captcha.component.image.wordtoimage.WordToImage wordToImage = new com.octo.captcha.component.image.wordtoimage.ComposedWordToImage( fontGenerator, backgroundGenerator, textPaster); this.addFactory( new com.octo.captcha.image.gimpy.GimpyFactory(wordGenerator, wordToImage)); }
protected void buildInitialFactories() { com.octo.captcha.component.word.wordgenerator.WordGenerator wordGenerator = new com.octo.captcha.component.word.wordgenerator.RandomWordGenerator( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); TextPaster textPaster = new NonLinearTextPaster(new Integer(5), new Integer(7), new RandomListColorGenerator(new Color[] {Color.BLACK, Color.YELLOW, Color.WHITE}), Boolean.TRUE); BackgroundGenerator backgroundGenerator = new GradientBackgroundGenerator( new Integer(200), new Integer(100), Color.CYAN, Color.GRAY); FontGenerator fontGenerator = new DeformedRandomFontGenerator( new Integer(25), new Integer(30)); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); this.addFactory(new com.octo.captcha.image.gimpy.GimpyFactory(wordGenerator, wordToImage)); } }
protected void buildInitialFactories() { // word generator com.octo.captcha.component.word.wordgenerator.WordGenerator dictionnaryWords = new com.octo.captcha.component.word.wordgenerator.ComposeDictionaryWordGenerator( new com.octo.captcha.component.word.FileDictionary("toddlist")); // wordtoimage components TextPaster randomPaster = new DecoratedRandomTextPaster(new Integer(8), new Integer(15), new SingleColorGenerator(Color.BLACK), new TextDecorator[] { new BaffleTextDecorator(2, Color.black) }); BackgroundGenerator back = new UniColorBackgroundGenerator(new Integer( 200), new Integer(100), Color.white); // BackgroundGenerator back = new FunkyBackgroundGenerator(new // Integer(200), new Integer(100)); FontGenerator shearedFont = new RandomFontGenerator(new Integer(20), new Integer(25)); // word2image 1 com.octo.captcha.component.image.wordtoimage.WordToImage word2image = new com.octo.captcha.component.image.wordtoimage.ComposedWordToImage( shearedFont, back, randomPaster); this.addFactory(new com.octo.captcha.image.gimpy.GimpyFactory( dictionnaryWords, word2image)); } }
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }
/** * gimpies are ImageCaptcha * * @return a pixCaptcha with the question :"spell the word" */ public ImageCaptcha getImageCaptcha(Locale locale) { BufferedImage background = generator.getBackground(); BufferedImage out = new BufferedImage(background.getWidth(), background.getHeight(), background.getType()); out.getGraphics().drawImage(background, 0, 0, null, null); int x = background.getWidth(); int y = background.getHeight(); //taking a square from original int scaledX = Math.max(x * scale.intValue() / 100, 1); int scaledY = Math.max(y * scale.intValue() / 100, 1); int xPos = myRandom.nextInt(x - scaledX); int yPos = myRandom.nextInt(y - scaledY); BufferedImage clone = out.getSubimage(xPos, yPos, scaledX, scaledY); out.getGraphics().drawImage(deformation.deformImage(clone), xPos, yPos, Color.white, null); out.getGraphics().dispose(); Point center = new Point(xPos + (scaledX / 2), yPos + (scaledY / 2)); return new FishEye(CaptchaQuestionHelper.getQuestion(locale, BUNDLE_QUESTION_KEY), out, center, tolerance); }
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }
@Override protected void buildInitialFactories() { RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);// 验证码随机颜色 BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH); // 验证码背景图片 WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD); FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);// 验证码随机字体 TextDecorator[] textDecorator = new TextDecorator[] {}; TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator); WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster); addFactory(new GimpyFactory(wordGenerator, wordToImage)); } }