将彩色图片转化为灰度图

下面代码完成了将彩色图片转化为灰度图,
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值