各位,用java程序可以生成图片吗?用什么方法啊,,我现在一点思路都没有。求各位大虾给个思路。。            谢谢了!

解决方案 »

  1.   

    可以。一下是一段生成验证码图片的jsp代码,希望对你有帮助。<%@ page import="java.util.Random"%><%@ page
    import="java.io.OutputStream"%><%@ page import="java.awt.Color"%><%@ page
    import="java.awt.Font"%><%@ page import="java.awt.Graphics"%><%@ page
    import="java.awt.image.BufferedImage"%><%@ page
    import="javax.imageio.ImageIO"%>
    <%@ page
    import="....SessionKeyConstant"%>
    <%
    int width = 60;
    int height = 22;
    //create the image
    BufferedImage image = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    // set the background color
    g.setColor(new Color(0xDCDCDC));
    g.fillRect(0, 0, width, height);
    // draw the border
    g.setColor(Color.black);
    g.drawRect(0, 0, width - 1, height - 1);
    // create a random instance to generate the codes
    Random rdm = new Random();
    String hash1 = Integer.toHexString(rdm.nextInt());
    // make some confusion
    for (int i = 0; i < 50; i++)
    {
    int x = rdm.nextInt(width);
    int y = rdm.nextInt(height);
    g.drawOval(x, y, 0, 0);
    }
    // generate a random code
    String capstr = hash1.substring(0, 4);
    session.setAttribute(SessionKeyConstant.VALIDATECODE, capstr);
    g.setColor(new Color(0, 100, 0));
    g.setFont(new Font("Times New Roman", Font.PLAIN, 20));
    g.drawString(capstr, 11, 17);
    g.dispose();
    response.setContentType("image/jpeg");
    out.clear();
    out = pageContext.pushBody();
    OutputStream strm = response.getOutputStream();
    ImageIO.write(image, "jpeg", strm);
    strm.close();
    %>
      

  2.   

    你要生成什么图片啊,我见过的java生成的图片就是验证码,还有jfreechart生成的报表图片
      

  3.   

    用Servlet生成动态图片,java程序生成动态图片的例子
    Java代码
        package servlet;  //包名  
          
        import java.awt.*;  
        import java.awt.image.*;  
        import com.sun.image.codec.jpeg.*;  
        import java.io.IOException;  
          
        import javax.servlet.*;  
        import javax.servlet.http.*;  
          
        public class JPEGServlet extends HttpServlet {  
          
         private static final long serialVersionUID = 1L;  
          
         public void doGet(HttpServletRequest request, HttpServletResponse response)  
           throws ServletException, IOException {  
          
          response.setContentType("image/jpeg");  
          ServletOutputStream out = response.getOutputStream();  
          BufferedImage image = new BufferedImage(750, 30, BufferedImage.TYPE_INT_RGB);  
          int per = 0;  
          try  
          {  
           per = Integer.parseInt((String)request.getParameter("size"));//接收参数,表示进度  
          }  
          catch(Exception e)  
          {  
           e.printStackTrace();  
          }  
            
          Graphics graphics = image.getGraphics();  
          graphics.setColor(Color.green);  
          graphics.fillRect(0, 0, 750, 30);  
          graphics.setColor(Color.yellow);  
          graphics.fillRect(0, 0, 750 * per / 100, 30);  
          JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
          encoder.encode(image);  
          out.close();  
         }  
          
         public void doPost(HttpServletRequest request, HttpServletResponse response)  
           throws ServletException, IOException {  
          
          doGet(request, response);  
         }  
          
        }  
    web.xml    <servlet>  
           <servlet-name>jpegServlet</servlet-name>             
           <servlet-class>servlet.JPEGServlet</servlet-class>
        </servlet>  
          
        <servlet-mapping>  
           <servlet-name>jpegServlet</servlet-name>
           <url-pattern>/picture</url-pattern>
        </servlet-mapping>  JSP
    <jsp:include page="/picture" flush="true">  
       <jsp:param name="size" value="33">//这里value值当然就可以是个变量了  
    </jsp:inclue>访问: http://localhost:8088/工程名称/picture?size=33
      

  4.   

    使用AJAX和Struts2生成图片:
    struts.xml配置
    <package name="stuts-test" extends="struts-default" namespace="/">    <action name="pic" class="action.PictureAction" method="createPicture"></action></package>Action:
    package action;
    import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;import javax.servlet.ServletOutputStream;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    @SuppressWarnings("serial")public class PictureAction extends ActionSupport {
        public void createPicture() throws Exception {        BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);        Graphics g = image.getGraphics();        g.setColor(Color.WHITE);        g.fillOval(50, 50, 100, 100);
            ServletActionContext.getResponse().setContentType("image/png");        ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();        ImageIO.write(image, "png", out);        out.close();    }}页面:
    <html><head>    <meta http-equiv="Content-type" content="text/html; charset=utf-8">    <title>Title</title>
        <script src="jquery.js"></script>    <script type="text/javascript">    $(function() {        $("#ajaxImg").attr("src", "pic.action");    });    </script></head>
    <body>    <img id="ajaxImg" /></body></html>
      

  5.   

    使用AJAX和Struts2生成图片:
    struts.xml配置<package name="stuts-test" extends="struts-default" namespace="/">  <action name="pic" class="action.PictureAction" method="createPicture"></action></package>
    Action:
    package action;
    import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;
    import javax.imageio.ImageIO;import javax.servlet.ServletOutputStream;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    @SuppressWarnings("serial")public class PictureAction extends ActionSupport {
      public void createPicture() throws Exception {  BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);  Graphics g = image.getGraphics();  g.setColor(Color.WHITE);  g.fillOval(50, 50, 100, 100);
      ServletActionContext.getResponse().setContentType("image/png");  ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();  ImageIO.write(image, "png", out);  out.close();  }}
    页面:
    <html><head>  <meta http-equiv="Content-type" content="text/html; charset=utf-8">  <title>Title</title>
      <script src="jquery.js"></script>  <script type="text/javascript">  $(function() {  $("#ajaxImg").attr("src", "pic.action");  });  </script></head>
    <body>  <img id="ajaxImg" /></body></html>**********************************************************************************
    用Servlet生成动态图片,java程序生成动态图片的例子
    Java代码
      
    package servlet; //包名   
        
      import java.awt.*;   
      import java.awt.image.*;   
      import com.sun.image.codec.jpeg.*;   
      import java.io.IOException;   
        
      import javax.servlet.*;   
      import javax.servlet.http.*;   
        
      public class JPEGServlet extends HttpServlet {   
        
      private static final long serialVersionUID = 1L;   
        
      public void doGet(HttpServletRequest request, HttpServletResponse response)   
      throws ServletException, IOException {   
        
      response.setContentType("image/jpeg");   
      ServletOutputStream out = response.getOutputStream();   
      BufferedImage image = new BufferedImage(750, 30, BufferedImage.TYPE_INT_RGB);   
      int per = 0;   
      try   
      {   
      per = Integer.parseInt((String)request.getParameter("size"));//接收参数,表示进度   
      }   
      catch(Exception e)   
      {   
      e.printStackTrace();   
      }   
        
      Graphics graphics = image.getGraphics();   
      graphics.setColor(Color.green);   
      graphics.fillRect(0, 0, 750, 30);   
      graphics.setColor(Color.yellow);   
      graphics.fillRect(0, 0, 750 * per / 100, 30);   
      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
      encoder.encode(image);   
      out.close();   
      }   
        
      public void doPost(HttpServletRequest request, HttpServletResponse response)   
      throws ServletException, IOException {   
        
      doGet(request, response);   
      }   
        
      }   
    web.xml  <servlet>   
      <servlet-name>jpegServlet</servlet-name>   
      <servlet-class>servlet.JPEGServlet</servlet-class>
      </servlet>   
        
      <servlet-mapping>   
      <servlet-name>jpegServlet</servlet-name>
      <url-pattern>/picture</url-pattern>
      </servlet-mapping>   JSP
    <jsp:include page="/picture" flush="true">   
      <jsp:param name="size" value="33">//这里value值当然就可以是个变量了   
    </jsp:inclue>访问: http://localhost:8088/工程名称/picture?size=33
      

  6.   

    这里有几个 java生成图片的例子
    http://zhidao.baidu.com/question/76579507.htmlhttp://edu.codepub.com/2010/0421/22159.phphttp://cache.baidu.com/c?m=9d78d513d99b12eb0bfa950e1a67dc716d2797133dc0a11e68d5e35fe2124c31367192bf30516110948522685be90f1efdf1456f2a537eeacedf883ddebf933f2fff76692f01d816458344e48a157adc70ce07bcb258a1e9b669c2b3d2d0d95758cc51057882f48a590717c868f41533e1bb&p=c962c816d9c411a059eac83a517a&user=baidu&fm=sc&query=java%C9%FA%B3%C9%CD%BC%C6%AC&qid=ece03cee0c50334c&p1=13
    http://cache.baidu.com/c?m=9d78d513d99b12eb0bfa950e1a67dc716d2797133dc0a11e68d5e35fe2124c31367192bf30516110948522685be90f1efdf1456f2a597ba09bbfd81986edd53f2fff76692f01de12568053e8970c629d3dc004b4fa04bcfca76d8ef984d18e54009c07077cd6fb805d07169b3ea04032b0a4ce5f15284afcb26e&p=8371d210c89c12a05ebd9b7e0b59&user=baidu&fm=sc&query=java%C9%FA%B3%C9%CD%BC%C6%AC&qid=ece03cee0c50334c&p1=11