刚才没有说明白。我用了JAI处理。具体如下:
我做了一个java的应用程序。在一个JPanel中,我放了一个JLabel,
在new JLabel(icon);时,我放了一个icon对象。
这个icon对象,是通过文件取得的图片,(icon是个java接口,我实现了它)
在这时,我可以取得JLabel中的这个icon对象。
现在问题是,我如何将这个icon对象以文件的方式保存起来。
大侠们,支招!

解决方案 »

  1.   

    把这个对象通过ObjectOutputStream 输出到文件就可以了前提是这个Icon的实现类 实现了java.io.Serializable 接口
      

  2.   

    Serializable序列化,保存文件。
      

  3.   

    贴一个自己写的图片缩放,里面代码不一定适合你,因为我这个是在servlet里面写的。
     //defaultSuffix是jpg
      public static final boolean resizeImage(String fileName, String suffix) throws Exception {
         boolean uploaded = false;
         BufferedImage input;
         if(suffix.equalsIgnoreCase("tif")||suffix.equalsIgnoreCase("tiff")||suffix.equalsIgnoreCase("png")) {
          RenderedImage image = JAI.create("fileload", TurbineServlet.getRealPath(imageRoot + fileName+"."+suffix));
             WritableRaster raster = image.copyData(null);
             BufferedImage bi = new BufferedImage( image.getColorModel(), raster,  true, null); 
             BufferedImage bi2 = new BufferedImage( maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth(),  BufferedImage.TYPE_INT_RGB);
             Graphics2D g2 = bi2.createGraphics();
             g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
             g2.setBackground(java.awt.Color.WHITE);//把tiff和png转换后的背景设置为白色
             g2.fillRect(0, 0, maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth());
             g2.drawImage(bi, 0, 0, maxResizeDimension, bi.getHeight()*maxResizeDimension/bi.getWidth(), null);
             PlanarImage pi = PlanarImage.wrapRenderedImage(bi2);
             JAI.create("FileStore", pi, TurbineServlet.getRealPath(resizeRoot + fileName+"."+defaultSuffix).replaceAll("\\\\","\\\\\\\\"), "JPEG", new JPEGEncodeParam());
            input = pi.getAsBufferedImage();
            int w = maxThumbDimension, h = maxThumbDimension;        BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
            Graphics2D g = output.createGraphics();
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g.drawImage(input,0,0,w,h, null);
            ImageIO.write(output, defaultSuffix, new File(TurbineServlet.getRealPath(thumbRoot + fileName+"."+defaultSuffix)));
         }
         else {
          input = ImageIO.read(new File(TurbineServlet.getRealPath(imageRoot + fileName+"."+suffix)));
             int w = maxThumbDimension, h = maxThumbDimension;         BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
             Graphics2D g = output.createGraphics();
             g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
             g.drawImage(input,0,0,w,h, null);
             ImageIO.write(output, defaultSuffix, new File(TurbineServlet.getRealPath(thumbRoot + fileName+"."+defaultSuffix)));
             
             BufferedImage output2 = new BufferedImage(maxResizeDimension, input.getHeight()*maxResizeDimension/input.getWidth(), BufferedImage.TYPE_3BYTE_BGR);
             Graphics2D g2 = output2.createGraphics();
             g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
             g2.drawImage(input,0,0,maxResizeDimension, input.getHeight()*maxResizeDimension/input.getWidth(), null);
             ImageIO.write(output2, defaultSuffix, new File(TurbineServlet.getRealPath(resizeRoot + fileName+"."+defaultSuffix)));
         }
         uploaded = true;
         return uploaded;
      }
      

  4.   

    使用串行化,就是这个类实现java.io.Serializable 接口
    把这个对象通过ObjectOutputStream 输出到文件