将彩色图片转化为灰度图

来源:互联网 发布:手游代练软件 编辑:程序博客网 时间:2024/04/30 19:32

下面代码完成了将彩色图片转化为灰度图,
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<pixels.length;i++)            {                System.out.println(pixels[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;        }}
0 0
原创粉丝点击