我用了一下grayFilter,但转出的图片原来白色的也变灰了,看来不行,有没有别的办法?
图片格式,png,gif,jpg

解决方案 »

  1.   

    /**
         * 将彩色图像转换为灰度图。
         * @param srcImage BufferedImage
         * @param hints RenderingHints
         * @return BufferedImage
         */
        public static BufferedImage transformGrayJ2D(BufferedImage srcImage,
                                                     RenderingHints hints) {
            BufferedImage dstImage = new BufferedImage(srcImage.getWidth(),
                    srcImage.getHeight(),
                    srcImage.getType());        if (hints == null) {
                Graphics2D g2 = dstImage.createGraphics();
                hints = g2.getRenderingHints();
                g2.dispose();
                g2 = null;
            }        ColorSpace grayCS = ColorSpace.getInstance(ColorSpace.CS_GRAY);
            ColorConvertOp colorConvertOp = new ColorConvertOp(grayCS, hints);
            colorConvertOp.filter(srcImage, dstImage);        return dstImage;
        }
      

  2.   

    不好意思问一下,RenderingHints是干什么的,传什么给它?
      

  3.   

    RenderingHints你可以认为是用来控制生成图像的质量,
    你可以这么构造它:
    public RenderingHints DefaultRenderingHints = new RenderingHints(
                        RenderingHints.KEY_ALPHA_INTERPOLATION,
                        RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);具体键值的意义见API文档。