public static BufferedImage GetImage(String checkrnd) {
        BufferedImage image = new BufferedImage(12 * (checkrnd.length()+1),
                                                24, BufferedImage.TYPE_INT_RGB);        try {
           // File out = new File("d:\\image.jpg");
            Graphics g = image.getGraphics();
            g.setColor(new Color(38,80,166));
            g.fillRect(0, 0, 12 * (checkrnd.length()+1), 24);
            g.setColor(Color.WHITE);
            Font font = g.getFont().deriveFont((float)20);
            g.setFont(font);
            g.drawString(checkrnd, 6, 20);
            g.dispose();
            //ImageIO.write(image, "JPEG", out);        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return image;
    }-----------------
jsp里这么调用
<%
    String checkrnd;
    long seed=0;
    int rnd,rnd2,rnd3,rnd4;
    seed=new Date().getTime();
    Random rand=new Random(seed);
    rnd=rand.nextInt(10);
    rnd2=rand.nextInt(10);
    rnd3=rand.nextInt(10);
    rnd4=rand.nextInt(10);
    checkrnd=String.valueOf(rnd)+String.valueOf(rnd2)+String.valueOf(rnd3)+String.valueOf(rnd4);
BufferedImage image = StringUtil.GetImage(checkrnd); checkrnd = StringUtil.encodeBase64(checkrnd);
Cookie cookiecheckrnd = new Cookie("cookiecheckrnd",checkrnd);
response.addCookie(cookiecheckrnd); // Send back image
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(image, "JPEG", sos);
sos.close();
%>
有没其他办法,不用imageio类

解决方案 »

  1.   

    现在经过改进 使用jpegencoder类处理图片并输出
    在tomcat上工作良好
    但换到weblogic上后,显示图片的地方现在显示为一个"X",使用了各种办法调试:
    1. 使用try catch捕捉错误,结果 控制台无一提示
    2. 使用System.out.println()语句 在每句执行语句后都打印一个字符串到控制台,结果所有的语句都被打出
    3. 我尝试将StringUtil.GetImage(checkrnd);方法生成的图片直接写到硬盘上,结果硬盘上确实有此图片,其内容与预期的完全一样
    4. 我尝试从硬盘装载一张图片到内存,然后不加处理直接显示,结果 原本该显示图片的地方还是显示一个"X"
    5. 我尝试将 从硬盘装载的文件不加处理直接写回硬盘, 结果 写回去的文件与装载的文件完全一致
    6. 我尝试寻找一把足以毁掉眼前那个烂东西的武器……谁能帮帮我
    注:编程的环境是tomcat4+jdk1.4, 实际运行环境是weblogic6.1和7+jdk1.3
    上述的6种尝试均在weblogic6.1和7+jdk1.31上执行,我确信没有使用到不属于jdk1.3的东西
      

  2.   

    >图片是图片,数字是数字>未必需要实时产生图片啊,可以先预存10张图片“1、2、3、4 ……”这个方法不错,很灵巧,根据需要,如果时间够机器强的话,自己生成图片罗
    我记得用Response.out 就可以输出了啊,好象还要flush一下
    你把你需要生成的*.jpg解析到你的图片生成的程序上就ok了
      

  3.   

    http://expert.csdn.net/Expert/topic/2265/2265735.xml?temp=.1635248或者用servlet输出图片
      

  4.   

    “预存 10 张图片” 不是说就直接把图片贴在网页上了你可以结合 servlet输出图片
    http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=12602这样可以省去你动态绘制图片的步骤