代码如下:求高手解决
package ceshi;import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;//Eclipse默认把这些受访问限制的API设成了ERROR。只要把windows->
                       //Preferences->java-complicer->Errors/warning里面的Deprecated and restricted中的
      //forbidden references选为warning即可
public class YanZhengMa {
int Weight=100;//图片宽
int Height=200;//图片高
BufferedImage  image=new BufferedImage(Weight,Height,BufferedImage.TYPE_INT_RGB);//weight,height是int类型的图片长宽变量
static String[] c={"a","b","c","d","e","f"};
public static void main(String[] args) {
         YanZhengMa t=new YanZhengMa();
         String path="D:";
         t.drawPicture();
         t.createJpg(path);
}
//获取制定长度的字符串,三个参数分别代表,单个字符串数组作为验证码获取的字符串,字符串数组的长度,定义获得字符串长度
   public String getRandomStr(String[] regter,int leg,int strln){
   Random intRandom=new Random();
   StringBuffer str=new StringBuffer();
   for(int i=0;i<strln;i++){
   str.append(String.valueOf(regter[intRandom.nextInt(leg)]));   
   }
   return str.toString();
   }
   //把字符串画在jpg格式的文件上
   public void  drawPicture(){
  Graphics  g=image.getGraphics();
  Graphics2D pen = (Graphics2D) g;// 平面图像,pen为画笔
  pen.setColor(Color.white);
  pen.fillRect(0, 0, Weight, Height);
  pen.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
  String str=getRandomStr(c,6, 5);
  pen.drawString(str,100,100);
   }
   //生成jpg格式的图片
   public void createJpg(String path){
   try {
FileOutputStream fos=new FileOutputStream(path);
BufferedOutputStream bos=new BufferedOutputStream(fos);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
fos.close();
bos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ImageFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   
   }
}

解决方案 »

  1.   

    你给的path不对啊,只说“D:”文件名呢?
      

  2.   

    给你一个我写的,参考一下:package web;import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Random;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;public class CheckCodeServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    System.out.println("service...");
    response.setContentType("image/jpeg");
    BufferedImage image = new BufferedImage(60, 20,
    BufferedImage.TYPE_INT_RGB);
    Random r = new Random();
    Graphics g = image.getGraphics();
    g.setColor(
    new Color(r.nextInt(255), r.nextInt(255), 
    r.nextInt(255)));
    g.fillRect(0, 0, 60, 20);
    g.setColor(new Color(0,0,0));
    String number = String.valueOf(
    r.nextInt(99999)); 
    HttpSession session = request.getSession();
    session.setAttribute("number", number);
    g.drawString(number, 5, 15);
    g.drawLine(r.nextInt(60),r.nextInt(20),
    r.nextInt(60),r.nextInt(20));
    g.drawLine(r.nextInt(60),r.nextInt(20),
    r.nextInt(60),r.nextInt(20));
    g.drawLine(r.nextInt(60),r.nextInt(20),
    r.nextInt(60),r.nextInt(20));
    g.drawLine(r.nextInt(60),r.nextInt(20),
    r.nextInt(60),r.nextInt(20));

    OutputStream os = response.getOutputStream();
    JPEGImageEncoder encoder = 
    JPEGCodec.createJPEGEncoder(os);
    encoder.encode(image);
    }}