本帖最后由 whzhang2008 于 2010-03-11 14:23:51 编辑

解决方案 »

  1.   

    http://topic.csdn.net/u/20100206/17/f0971124-6de3-463f-8dba-5d3fb54adaee.html
      

  2.   

    谢谢楼上的,不过处理出来的图片跟JDK封装的代码处理的结果是差不多,不知道photoshop做了什么处理?
      

  3.   

    那帖子里的公式和photoshop里去色的公式应该是一样的 
    不妨你把处理过后的两张照片放上来对比下 看有什么不同
      

  4.   

    http://www.camick.com/java/source/HSLColor.java去下这个文件。然后for(int i = 0; i < width * height; i++) {
      HSLColor hslColor = new HSLColor(HSLColor.fromRGB(new Color(pixels[i])));
      newPixels[i] = hslColor.adjustSaturation(0).getRGB();
    }
      

  5.   


        public static BufferedImage grayImage(final BufferedImage srcImg) {
            int width = srcImg.getWidth();
            int height = srcImg.getHeight();
            int[] pixels = new int[width * height];
            srcImg.getRGB(0, 0, width, height, pixels, 0, width);
            int newPixels[] = new int[width * height];
            for(int i = 0; i < width * height; i++) {
                HSLColor hslColor = new HSLColor(HSLColor.fromRGB(new Color(pixels[i])));
                newPixels[i] = hslColor.adjustSaturation(0).getRGB();
            }
            BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            bi.setRGB(0, 0, width, height, newPixels, 0, width);
            return bi;
        }