求一js代码 用于在Gridview中显示缩略图 图片较大 要缩小真实大小生成新的小图片

解决方案 »

  1.   

    用JQ
    $(document).ready(function(){
        $(img).css({width:"100px",height:"100px"});
    });
      

  2.   

    求一js代码
    JS办不到,只能服务器端解决生成新图片?
    我来给一个类吧!
    /**
     * 产生缩阅图
     * @return boolean
     */
    public static void buildSmallPic(File inputFile,File outputFile,int outputWidth,int outputHeight,boolean proportion){
    try { 
     if (!inputFile.exists()) return; 
                 Image img = ImageIO.read(inputFile); 
                 Toolkit toolkit = Toolkit.getDefaultToolkit();
                 Image srcImage = toolkit.getImage(inputFile.getAbsolutePath()); // 构造Image对象
                 int width = -1;
                 int height = -1;
                 boolean flag = true;
                 while (flag) {
                     width = srcImage.getWidth(null); // 得到源图宽
                     height = srcImage.getHeight(null); // 得到源图长
                     if (width > 0 && height > 0) { 
                         flag = false;
                     } else {
                         try {
                             Thread.sleep(10);
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
                     }
                 }
                 
                 //if(width==outputWidth && height==outputHeight) return ;//相等了
                 
                 //判断图片格式是否正确 
                 if (img.getWidth(null) == -1) {
                     System.out.println("can't read,retry!" + "<BR>"); 
                     return; 
                 }else{ 
                  if (!outputFile.exists()) { 
                  outputFile.createNewFile();
                  }
                  int newWidth; int newHeight; 
                  // 判断是否是等比缩放 
                     if (proportion == true) { 
                         // 为等比缩放计算输出的图片宽度及高度 
                         double rate1 = ((double) img.getWidth(null)) / (double) outputWidth + 0.1; 
                         double rate2 = ((double) img.getHeight(null)) / (double) outputHeight + 0.1; 
                         // 根据缩放比率大的进行缩放控制 
                         double rate = rate1 > rate2 ? rate1 : rate2; 
                         newWidth = (int) (((double) img.getWidth(null)) / rate); 
                         newHeight = (int) (((double) img.getHeight(null)) / rate); 
                     } else { 
                         newWidth = outputWidth; // 输出的图片宽度 
                         newHeight = outputHeight; // 输出的图片高度 
                     } 
                     
                     
                     
                     BufferedImage tag = new BufferedImage((int)newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB); 
                     /*
                     * Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的
                     * 优先级比速度高 生成的图片质量比较好 但速度慢
                     */ 
                     Graphics2D g = tag.createGraphics();
                     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
                     g.drawImage(img.getScaledInstance(newWidth,newHeight,Image.SCALE_SMOOTH),0,0,null);
                     g.dispose();
                     
                     /*质量不高
                     /* FileOutputStream out = new FileOutputStream(outputFile);
                     // JPEGImageEncoder可适用于其他图片类型的转换 
                     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
                     encoder.encode(tag); 
                     out.close();*/
         
                     // FileOutputStream out = new FileOutputStream(outputFile);
                     // JPEGImageEncoder可适用于其他图片类型的转换 
                     //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                     ImageWriter   writer   =   null; 
                     ImageTypeSpecifier   type   =  ImageTypeSpecifier.createFromRenderedImage(tag); 
                     Iterator<ImageWriter>   iter   =   ImageIO.getImageWriters(type,"jpg"); 
                     if(iter.hasNext())   { 
                      writer=(ImageWriter)iter.next(); 
                     } 
                     if(writer ==null)   { 
                        return; 
                     } 
                     IIOImage iioImage = new   IIOImage(tag,   null,   null); 
                     ImageWriteParam   param   =   writer.getDefaultWriteParam(); 
                     param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
                     //设置质量(0.1-1)
                  param.setCompressionQuality(1f); 
                     ImageOutputStream   outputStream   =  ImageIO.createImageOutputStream(outputFile);
                     writer.setOutput(outputStream); 
                     writer.write(null,   iioImage,   param); 
                     
                     outputStream.flush();
                     outputStream.close();
                 }
            } catch (IOException ex) { 
                ex.printStackTrace(); 
            } 
    }