本帖最后由 kokobox 于 2009-03-20 14:17:39 编辑

解决方案 »

  1.   

    网页中实现这些功能不现实吗! JSP不能实现这些功能吗? 高手们呢,
      

  2.   

    可以在JSP网页中嵌入第三方插件啊。
      

  3.   

    ASP夜未眠 QQ群: 26387609(在一个月以下编写HTML经验的朋友请不要加) 本群主要研讨ASP组件、交易平台网开发人员交流
      

  4.   

    <a href="http://www.baidu.com">what is </a>
      

  5.   

    如果在客户端做,那是js的问题
    如果在后台做,那是java的问题
    总之,和jsp关系不大
      

  6.   

    图片处理和JSP没什么关系,Java提供了JAI开发包处理图片,当然还有很多开源的实现。
    至于对图片进行操作,一般都是自己实现,主要是操作BufferedImage来达到目的。
      

  7.   

    JAVA核心技术第二卷里面有讲对图像的处理,你说的这些我记得好像基本上都讲到了。
      

  8.   

    首先你先用javax.imageio.imageReader类将用户上传的图片读取到内存中生成BufferImage对象,此对象能够对图像像素矩阵进行操作, 
    转换成黑白图片以及白色显示为透明状态都有常用的算法,其实就是操作图片的像素点 
    处理完后再通过imageWriter类将图片存为图片文件,在页面上用<img>标签显示就行了 
    具体的函数方法去参考api 
    jdk 里面有对jepg 和 bmp格式图像读取的类 
      

  9.   

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    String url ="jdbc:mysql://localhost:3306/test?user=root&password=eastsoftweb";
    Connection conn= DriverManager.getConnection(url); 
    java.io.File file = new File("d:/temp/1.jpg");
     FileInputStream is=new FileInputStream(file);
     PreparedStatement stmt = conn.prepareStatement(
              "INSERT INTO imagetable (nid,image)" +
    "VALUES (?, ?)");  //预编译SQL语句
     stmt.setInt(1, 1);
     stmt.setBinaryStream(2, is,(int)file.length());
     stmt.executeUpdate();
     stmt.close();
     is.close();
     out.println("update end");
    //===============将文件写入到数据库的大字段中end=========================
    */
    /*
    //====================== 二、jsp显示服务器硬盘图片示例 begin==============FileInputStream is=new FileInputStream("d:/temp/1.JPG");
    response.reset();
    response.setContentType("image/jpeg");         
    ServletOutputStream sos = response.getOutputStream();      
    byte[] buffer = new byte[1024];
    int len=0;
    while((len=is.read(buffer))>0){
      sos.write(buffer,0,len); 
    }  
      sos.flush();      
      sos.close(); 
      

  10.   

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    String url ="jdbc:mysql://localhost:3306/test?user=root&password=eastsoftweb";
    Connection conn= DriverManager.getConnection(url); 
    java.io.File file = new File("d:/temp/db.jpg");
    FileOutputStream os=new FileOutputStream(file);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    ResultSet rs=stmt.executeQuery("select nid,image from imagetable where nid=1");
    rs.next();
    byte[] buffer=rs.getBytes(2);
    stmt.close();
    os.write(buffer);
    os.flush();
    os.close();
    out.println("query end");//网页上显示
    response.reset();
    response.setContentType("image/jpeg");         
    ServletOutputStream sos = response.getOutputStream();      
    sos.write(buffer);
    sos.flush();      
    sos.close(); 
    //======================将数据库的大字段图片还原到本地,并在网页上显示end===================
     
    /*
    //======================四、生成缩略图begin==============================
    File file = new File("d:/temp/1.JPG"); 
    String newurl="d:/temp/2.jpg";  //新的缩略图保存地址
    Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    float tagsize=200;
    int old_w=src.getWidth(null);                                     //得到源图宽
    int old_h=src.getHeight(null);   
    int new_w=0;
    int new_h=0;                            //得到源图长
    int tempsize;
    float tempdouble; 
    if(old_w>old_h){
     tempdouble=old_w/tagsize;
    }else{
     tempdouble=old_h/tagsize;
    }
    new_w=Math.round(old_w/tempdouble);
    new_h=Math.round(old_h/tempdouble);//计算新图长宽
    BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);       //绘制缩小后的图
    FileOutputStream newimage=new FileOutputStream(newurl);          //输出到文件流
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);       
    encoder.encode(tag);                                               //近JPEG编码
    newimage.close(); 
      

  11.   

    代码繁多.就不好贴出来了 
    JAVA2核心技术卷二 第七章高级AWT里面都有详细的介绍
      

  12.   

     
     jsp------图片????
      

  13.   

    我看到过一些关于Java编辑图片的例子好像用到了Java.swing.*中的类。其实Java世具备处理图片的能力的
      

  14.   


    /// <summary>
            /// 图片加水印
            /// </summary>
            /// <param name="filepath">图片路径</param>
            /// <returns>BitMap</returns>
            private static Bitmap AddWord(string filepath){
                var bm=new Bitmap(filepath);
                using(Graphics g=Graphics.FromImage(bm)){
                    g.DrawString("", new System.Drawing.Font("隶书", 36), new System.Drawing.SolidBrush(System.Drawing.Color.White), bm.Width / 10 - 50, bm.Height / 10 - 20);
                }
                return bm;
            }
      

  15.   


            /// <summary>
            /// 生成缩微图
            /// </summary>
            /// <param name="filepath">路径</param>
            /// <param name="thumbWi">缩微图宽</param>
            /// <param name="thumbHi">缩微图高</param>
            /// <param name="maintainAspect">长宽是否重置</param>
            /// <param name="Water">是否带水印,true 带水印,flase 不带水印</param>
            /// <returns>Bitmap</returns>
            private static Bitmap CreateThumbnail
                (string filepath,int thumbWi,int thumbHi,bool maintainAspect,bool Water){
                var source=new Bitmap(filepath);
                if(Water){
                    source.Dispose();
                    source=AddWord(filepath);
                }
                Bitmap ret=null;
                try{
                    int wi,hi;                wi=thumbWi;
                    hi=thumbHi;                if(maintainAspect){
                        if(source.Width
                            >source.Height){
                            wi=thumbWi;
                            hi=(int)(source.Height*((decimal)thumbWi/source.Width));
                        }
                        else{
                            hi=thumbHi;
                            wi=(int)(source.Width*((decimal)thumbHi/source.Height));
                        }
                    }
                    ret=new Bitmap(wi,hi);
                    using(Graphics g=Graphics.FromImage(ret)){
                        g.InterpolationMode=InterpolationMode.HighQualityBicubic;
                        g.FillRectangle(Brushes.White,0,0,wi,hi);
                        g.DrawImage(source,0,0,wi,hi);
                    }
                    source.Dispose();
                }
                catch{
                    ret=null;
                }            return ret;
            }        /// <summary>
            /// 生成缩微图
            /// </summary>
            /// <param name="filepath">路径</param>
            /// <param name="word">水印内容</param>
            /// <param name="fontsize">字体大小</param>
            /// <param name="color">字体颜色</param>
            /// <param name="thumbWi">缩微图宽</param>
            /// <param name="thumbHi">缩微图高</param>
            /// <param name="maintainAspect">长宽知否重置</param>
            /// <param name="Water">是否带水印</param>
            /// <returns></returns>
            private static Bitmap CreateThumbnail
                (
                string filepath,string word,int fontsize,Color color,int thumbWi,int thumbHi,bool maintainAspect,
                bool Water){
                var source=new Bitmap(filepath);
                if(Water){
                    source.Dispose();
                    source=AddWord(filepath,word,fontsize,color);
                }
                Bitmap ret=null;
                try{
                    int wi,hi;                wi=thumbWi;
                    hi=thumbHi;                if(maintainAspect){
                        if(source.Width
                            >source.Height){
                            wi=thumbWi;
                            hi=(int)(source.Height*((decimal)thumbWi/source.Width));
                        }
                        else{
                            hi=thumbHi;
                            wi=(int)(source.Width*((decimal)thumbHi/source.Height));
                        }
                    }
                    ret=new Bitmap(wi,hi);
                    using(Graphics g=Graphics.FromImage(ret)){
                        g.InterpolationMode=InterpolationMode.HighQualityBicubic;
                        g.FillRectangle(Brushes.White,0,0,wi,hi);
                        g.DrawImage(source,0,0,wi,hi);
                    }
                    source.Dispose();
                }
                catch{
                    ret=null;
                }            return ret;
            }        /// <summary>
            /// 生成高压比的缩微图
            /// </summary>
            /// <param name="filepath">原图路径</param>
            /// <param name="newpath">新图路径</param>
            /// <param name="thumbWi">缩微图宽</param>
            /// <param name="thumbHi">缩微图高</param>
            /// <param name="maintainAspect">是否重置长宽比</param>
            /// <param name="Water">是否带水印信息,true 带水印,false 不带水印</param>
            public static void CreateThumbnailPerfect
                (string filepath,string newpath,int thumbWi,int thumbHi,bool maintainAspect,bool Water){
                Image myThumbnail=CreateThumbnail(filepath,thumbWi,thumbHi,false,Water);            var encoderParams=new EncoderParameters();
                var quality=new long[1];
                quality[0]=75;
                var encoderParam=new EncoderParameter(Encoder.Quality,quality);
                encoderParams.Param[0]=encoderParam;            ImageCodecInfo[] arrayICI=ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo jpegICI=null;
                for(int x=0;x<arrayICI.Length;x++){
                    if(arrayICI[x].FormatDescription.Equals("JPEG")){
                        jpegICI=arrayICI[x];
                        break;
                    }
                }
                myThumbnail.Save(newpath,jpegICI,encoderParams);
                myThumbnail.Dispose();
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="filepath"></param>
            /// <param name="newpath"></param>
            /// <param name="thumbWi"></param>
            /// <param name="thumbHi"></param>
            /// <param name="maintainAspect"></param>
            /// <param name="Water"></param>
            public static void CreateThumbnailPerfect
                (
                string filepath,string word,int fontsize,Color color,string newpath,int thumbWi,int thumbHi,
                bool maintainAspect,bool Water){
                Image myThumbnail=CreateThumbnail(filepath,word,fontsize,color,thumbWi,thumbHi,false,Water);            var encoderParams=new EncoderParameters();
                var quality=new long[1];
                quality[0]=75;
                var encoderParam=new EncoderParameter(Encoder.Quality,quality);
                encoderParams.Param[0]=encoderParam;            ImageCodecInfo[] arrayICI=ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo jpegICI=null;
                for(int x=0;x<arrayICI.Length;x++){
                    if(arrayICI[x].FormatDescription.Equals("JPEG")){
                        jpegICI=arrayICI[x];
                        break;
                    }
                }
                myThumbnail.Save(newpath,jpegICI,encoderParams);
                myThumbnail.Dispose();
            }
      

  16.   

    jsp不就是java嘛?java是可以处理图片的。