在CAPTCHA中另一个已经绘制的图像上的图像

时间:2014-03-13 04:15:13

标签: java graphics2d

我想自己生成验证码而不使用任何其他API,但这里有一些问题。在我的代码中,我将每个角色视为一个图像,然后在它们上形成一些操作,但现在我想根据其中点旋转整个图像。

以下是我的示例代码:

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

            double randomValue =Math.random();
            int randomIndex = (int) Math.round(randomValue * (chars.length - 1));
            char characterToShow = chars[randomIndex];
            finalString.append(characterToShow);
            int charWidth = fontMetrics.charWidth(characterToShow);
            int charDim = Math.max(maxAdvance, fontHeight);
            //int halfCharDim = (int) (charDim / 2);
            charImage = new BufferedImage(charDim, charDim,BufferedImage.TYPE_INT_ARGB);
            charGraphics = charImage.createGraphics();
            charGraphics.setColor(textColor);
            charGraphics.setFont(textFont);
            int rn = ran.nextInt((20 - 10) + 1) + 10;
            x1=charDim/rn;
            int rn1 = ran.nextInt((20 - 10) + 1) + 10;
            y1=charDim/rn1;
            int charX = (int) ((0.5 * charDim - 0.5 * charWidth)+x1);
            int charY=(int) ((charDim - fontMetrics.getAscent()) / 2 +         fontMetrics.getAscent()+y1);
            charGraphics.drawString("" + characterToShow, charX, charY);
            float x = horizMargin + spacePerChar * (i) - charDim / 2.0f;
            int y = (int) ((height - charDim) / 2);
            g.setColor(Color.GREEN);
            g.drawImage(charImage, (int) (x+x1), (int)(y+y1), charDim,charDim, null,null);
            charGraphics.dispose();
        }

0 个答案:

没有答案