如何将TXT文本信息以一定的格式(如20号字)生成一幅图象(如image.tif),保存到文件夹。谢谢!

解决方案 »

  1.   

    这个不难啊,你熟悉文件I/O和java.awt.image就没难度啊!
      

  2.   

    或者直接将文本写到TIF图象上也可以。
      

  3.   

    package bean;import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.BorderLayout;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.awt.Toolkit;
    import java.awt.Dimension;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Graphics;
    import java.awt.Color;
    import javax.swing.ImageIcon;
    public class frame extends JFrame {
        JButton btnok = new JButton("生成图片");
        JPanel contentpane = new JPanel();
        JLabel label = new JLabel();    public frame() {
            try {
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setContentPane(contentpane);
                this.setResizable(false);
                this.setTitle("Test");
                this.setSize(300, 300);
                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
                Dimension size = this.getSize();            this.setLocation((screen.width - size.width) / 2,
                                 (screen.height - size.height) / 2);            this.setLayout(new BorderLayout());
                this.add(btnok, BorderLayout.SOUTH);
                this.add(label, BorderLayout.CENTER);            btnok.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        try {
                            BufferedReader reader = new BufferedReader(new
                                    FileReader(new File("d:\\1.txt")));
                            String str = reader.readLine();
                            reader.close();                        BufferedImage image = new BufferedImage((int) label.
                                    getSize().getWidth(),
                                                  (int) label.getSize().getHeight(),
                                    BufferedImage.TYPE_INT_RGB);
                            Graphics gr = image.getGraphics();
                            gr.setColor(Color.red);
                            gr.drawString(str, 100, 100);
                            gr.dispose();
                            label.setIcon(new ImageIcon(image));
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                    }
                });
                this.setVisible(true);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }    public static void main(String[] args) {
            new frame();
        }
    }
      

  4.   

    辛苦了;我的意思是对图象进行操作,不是显示在frame上,
    你可以得到一幅图象吗?
    如:xxx.tif   保存在一个目录下,如:d:\\xxx.tif
      

  5.   

    我这个是生成验证码的,估计和你的要求差不多Image.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
      <%@   page   contentType="image/jpeg"   import="java.awt.*,   
      java.awt.image.*,javax.imageio.*,java.net.*"   %>   
        
      <%!   
      Color   getRandColor(int   fc,int   bc){//random   color   
                      Random   random   =   new   Random();   
                      if(fc>255)   fc=255;   
                      if(bc>255)   bc=255;   
                      int   r=fc+random.nextInt(bc-fc);   
                      int   g=fc+random.nextInt(bc-fc);   
                      int   b=fc+random.nextInt(bc-fc);   
                      return   new   Color(r,g,b);   
                      }   
      %>   
      <%   
      //page   no   cache   
      response.setHeader("Pragma","No-cache");   
      response.setHeader("Cache-Control","no-cache");   
      response.setDateHeader("Expires",   0);   
        
      //   create   image   in   memory   
      int   width=60,   height=20;   
      BufferedImage   image   =   new   BufferedImage(width,   height,   BufferedImage.TYPE_INT_RGB);   
        
      //   get   GraphicContext   
      Graphics   g   =   image.getGraphics();   
        
        
      Random   random   =   new   Random();   
        
      //   set   background   
      g.setColor(getRandColor(200,250));   
      g.fillRect(0,   0,   width,   height);   
        
      //set   font   
      g.setFont(new   Font("Times   New   Roman",Font.PLAIN,18));   
        
      //set   border   
      //g.setColor(new   Color());   
      //g.drawRect(0,0,width-1,height-1);   
        
      //   generate   confusing   lines   
      g.setColor(getRandColor(160,200));   
      for   (int   i=0;i<155;i++)   
      {   
        int   x   =   random.nextInt(width);   
        int   y   =   random.nextInt(height);   
         int   xl   =   random.nextInt(12);   
         int   yl   =   random.nextInt(12);   
        g.drawLine(x,y,x+xl,y+yl);   
      }   
        
      //   4   bit   random   number   随即写出4个数字
      String   sRand="";   
      for   (int   i=0;i<4;i++){   
              String   rand=String.valueOf(random.nextInt(10));   
              sRand+=rand;   
              //   put   validation   code   to   image   
              g.setColor(new   Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));   
              g.drawString(rand,13*i+6,16);   
      }   
        
      //   save   code   to   SESSION 传递图片中的数字
      session.setAttribute("rand",sRand);   
        
        
      g.dispose();   
        
      //   display   image   
      ImageIO.write(image,   "JPEG",   response.getOutputStream());
      out.clear();
    out = pageContext.pushBody();   
      %>   
    Login.jsp<tr>
    <td>
    验证码:
    </td>
    <td>
    <html:text property="image"></html:text>
    </td>
    <td>
    <img width="60" height="20" src="<%=basePath%>/image.jsp">
    </td>
    </tr>
    loginAction
    String   validatecode=(String)session.getAttribute("rand");
    //获取image.jsp中传递的数字值   
    String   inputcode=logonForm.getImage();
            //从login.jsp中获取文本框输入的值
    if(validatecode.equals(inputcode)){  //如果两个相等
    登陆
    }else   

    String error="验证码错误,请重新输入.....";
      request.setAttribute("error", error);
    return mapping.findForward("fail");
    }