请大虾在jsp里....如何给图片加水印效果?

解决方案 »

  1.   

    当然是用水印组件了
    缩略图水印组件wsImage3.0 
    功能特点:  
    1、导入多种图片格式,目前支持BMP,JPG,GIF等。
    2、输出JPG格式缩略图,自定义输出压缩参数
    3、高效率生成缩略图,4种导出方式,方便灵活。
    4、图片裁减功能,自定义裁减区域。
    5、能购获取图片尺寸。
    6、支持文字水印,可自定义字体、颜色、旋转角度等。
    7、支持图片水印,图片水引支持透明度。
    8、顺代码实现,无须任何运行库,无须GDI+库。 
    9、在WIN98,WIN2000,WIN2003等操作系统上均测试通过。
    10、性能更稳定,消耗系统资源少。 
    http://www.wave12.com
      

  2.   

    可是去看了一下,是ASP的啊谁有JSP的组件呢?
      

  3.   

    给你贴一段代码,呵呵,这是我们以前在图片上加上一段文字的代码,你可以仔细看看,用的实际上是Graphics2D ,java的图形技术,不过这种方法非常耗资源,里面的BufferedImage的使用,你可以在网上找找看,我这里就不贴出来了,我之前做是把图像对象存咱session中:
    /*
     * ImageCaptionServlet.java
     *
     * Created on 2005年2月20日, 下午10:16
     */package OAServlet.ImageServlet;import java.io.*;
    import java.net.*;import javax.servlet.*;
    import javax.servlet.http.*;import java.awt.*;
    import java.awt.image.*;
    import java.awt.geom.*;
    import com.sun.image.codec.jpeg.*;
    /**
     *
     * @author  LongRiver
     * @version
     */
    public class ImageCaptionServlet extends HttpServlet implements ImageObserver {
        
        /** Initializes the servlet.
         */
        public void init(ServletConfig config) throws ServletException {
            super.init(config);
            
        }
        
        /** Destroys the servlet.
         */
        public void destroy() {
            
        }
        
        /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            request.setCharacterEncoding("gb2312");
            response.setHeader("Cache-Control","no-cache");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Expires", "0");
            
            HttpSession session=request.getSession();
            
            BufferedImage buffImage=(BufferedImage)session.getAttribute("image");
            
            if(buffImage==null){   //如果没有图象,创建一个
                buffImage=new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
            }
            
            BufferedImage outputImage=new BufferedImage(buffImage.getWidth(),buffImage.getHeight(),BufferedImage.TYPE_INT_RGB);
            Graphics2D g=(Graphics2D)outputImage.getGraphics();
            g.drawImage(buffImage,0,0,this);
            
            
            String caption=request.getParameter("caption");
            if(caption==null)caption="<<标题>>";
            String location=request.getParameter("location");
            if(location==null)location="bottom";
            String fontStr=request.getParameter("font");
            if(fontStr==null)fontStr="times";
            
            int style=Font.PLAIN;
            String styleStr=request.getParameter("style");
            if(styleStr.equals("italic"))style=Font.ITALIC;
            if(styleStr.equals("bold"))style=Font.BOLD;
            
            int size=8;
            String sizeStr=request.getParameter("size");
            
            if(sizeStr!=null){
                try{
                    size=Integer.parseInt(sizeStr);
                }catch(Exception e){
                }
            }
            
            int color=0xffffff;
            String colorStr=request.getParameter("color");
            if(colorStr!=null){
                try{
                    color=Integer.parseInt(colorStr);
                }catch(Exception e){
                    System.out.println(e.toString());
                }
            }
            Color fontColor=new Color(color);
            Font font=new Font(fontStr,style,size);
            
            Rectangle2D bounds=font.getStringBounds(caption,g.getFontRenderContext());
            int x=(int)((outputImage.getWidth()-bounds.getWidth())/2);
            int y=(int)(bounds.getHeight());
            
            if(location.equals("bottom")){
                y=outputImage.getHeight()-1;
            }
            
            g.setColor(fontColor);
            g.setFont(font);
            g.drawString(caption,x,y);
            
            response.setContentType("image/jpeg;charset=gb2312");
            JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(response.getOutputStream());
            encoder.encode(outputImage);
            
        }
        
        public boolean imageUpdate(Image img,int infoFlags,int x,int y,int width,int height){
            return false;
        }
        /** Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
        
        /** Handles the HTTP <code>POST</code> method.
         * @param request servlet request
         * @param response servlet response
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
        
        /** Returns a short description of the servlet.
         */
        public String getServletInfo() {
            return "Short description";
        }
        
    }
      

  4.   

    try{
      File file = new File(ImgName);
      Image src = ImageIO.read(file);
      int wideth=src.getWidth(null);
      int height=src.getHeight(null);
      BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
      Graphics g=image.createGraphics();
      g.drawImage(src,0,0,wideth,height,null);  //水印文件
      File file_yin = new File(...);
      Image yin = ImageIO.read(file_yin);
      int width_yin=yin.getWidth(null);
      int height_yin=yin.getHeight(null);
      g.drawImage(yin,wideth-110,height-110,width_yin,height_yin,null);  ///
      g.dispose();
      FileOutputStream out=new FileOutputStream(ImgName);
      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
      encoder.encode(image);
      out.close();
     }
     catch(Exception e){
       System.out.println(e);
      }
    }
      

  5.   

    楼上的,如何在jsp里引用啊!!
    ???????????????????
      

  6.   

    楼主PM我,留下Email,我发我写的一个bean给你。
      

  7.   

    怎么没见你发啊!!!!!!!!!!!!
    楼上的........已经好长时间了..是你忙忘了,还是...xxxxx啊??
      

  8.   

    现在将:QQ  EMAIL都贴出来了....就等你法了....