将彩色图片转化为灰度图

下面代码完成了将彩色图片转化为灰度图,
Elements和Common是两个工具类

public class TestPro {

     public static void main(String[] args) throws IOException {
            BufferedImage bi = (BufferedImage)ImageIO.read(new File("A://图片/小清新1.jpg"));
            int iw=bi.getWidth(null);
            int ih=bi.getHeight(null);
            Common common=new Common();
            Elements elements=new Elements();
            int[] pixels= common.grabber(bi, iw, ih);
            //转变为灰度图像
            pixels = elements.toGray(pixels, iw, ih);
            //将数组中的象素产生一个图像
            /*for(int i=0;i

            //showPix(graph, pixels, "转变结果");
            ImageProducer ip=new MemoryImageSource(iw, ih, pixels, 0, iw);
            Component component=new Component(){};
            Image sImage=component.createImage(ip);//通过ImageProducer对象生成Image对象
            boolean a=ImageIO.write(toBufferedImage(sImage), "jpg",new File("A://图片/test.jpg"));
            System.out.println(a);
     }

     //将Image对象转化为BufferedImage对象
     public static BufferedImage toBufferedImage(Image image) {
            if (image instanceof BufferedImage) {
                return (BufferedImage)image;
             }

            // This code ensures that all the pixels in the image are loaded
             image = new ImageIcon(image).getImage();

            // Determine if the image has transparent pixels; for this method's
            // implementation, see e661 Determining If an Image Has Transparent Pixels
            //boolean hasAlpha = hasAlpha(image);

            // Create a buffered image with a format that's compatible with the screen
             BufferedImage bimage = null;
             GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            try {
                // Determine the type of transparency of the new buffered image
                int transparency = Transparency.OPAQUE;
               /* if (hasAlpha) {
                 transparency = Transparency.BITMASK;
                 }*/

                // Create the buffered image
                 GraphicsDevice gs = ge.getDefaultScreenDevice();
                 GraphicsConfiguration gc = gs.getDefaultConfiguration();
                 bimage = gc.createCompatibleImage(
                 image.getWidth(null), image.getHeight(null), transparency);
             } catch (HeadlessException e) {
                // The system does not have a screen
             }

            if (bimage == null) {
                // Create a buffered image using the default color model
                int type = BufferedImage.TYPE_INT_RGB;
                //int type = BufferedImage.TYPE_3BYTE_BGR;//by wang
                /*if (hasAlpha) {
                 type = BufferedImage.TYPE_INT_ARGB;
                 }*/
                 bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
             }

            // Copy image to buffered image
             Graphics g = bimage.createGraphics();

            // Paint the image onto the buffered image
             g.drawImage(image, 0, 0, null);
             g.dispose();

            return bimage;
        }
}

你可能感兴趣的:(java学习)