图像反相

import  java.awt.Color;
import  java.awt.image.BufferedImage;
import  java.io.File;
import  java.io.IOException;
import  javax.imageio.ImageIO;

public  class  ch1  {

        public  static  void  main(String[]  args)  throws  Exception  {
                //  TODO  Auto-generated  method  stub
                BufferedImage  bi=ImageIO.read(new  File("1.jpg"));//读取图像               
                BufferedImage  nbi=fanxiang(bi);//处理图像                                                             
                ImageIO.write(nbi,  "jpg",  new  File("1b.jpg"));//输出图像                
        }

        private  static  BufferedImage  fanxiang(BufferedImage  bi)  {
        		//获得图像宽度和高度
        		int w=bi.getWidth();
        		int h=bi.getHeight();

				//创建新的图像变量
				BufferedImage nbi=new BufferedImage(w,h,BufferedImage.TYPE_3BYTE_BGR);
				
				//循环处理输出图像nbi中的每一个像素
				for(int y=0;y<h;y++){
					for(int x=0;x<w;x++){
						//原图bi坐标(x,y)处的像素值
						int pixel=bi.getRGB(x,y);
						
						//通过Color类处理红绿蓝三个通道的值
						Color c=new Color(pixel);
						int r=255-c.getRed();
						int g=255-c.getGreen();
						int b=255-c.getBlue();
						
						Color nc=new Color(r,g,b);
						int rgb=nc.getRGB();
						
						//设置输出图像坐标(x,y)处的像素值		
						nbi.setRGB(x,y,rgb);
						//nbi.setRGB(x,y,255*256*256);				
					}
				}
				return nbi;		
        }
}

或者

import  java.awt.Color;
import  java.awt.image.BufferedImage;
import  java.io.File;
import  javax.imageio.ImageIO;

public  class  ch1  {

	       public  static  void  main(String[]  args)  throws  Exception  {
	                //  TODO  Auto-generated  method  stub
	                BufferedImage  bi=ImageIO.read(new  File("input/1.jpg"));//读取图像               
	                BufferedImage  nbi=fanxiang(bi);//处理图像                                                             
	                ImageIO.write(nbi,"jpg",new  File("output/fanxiang.jpg"));//输出图像                
	       }

	        private  static  BufferedImage  fanxiang(BufferedImage  bi)  {
	        		//获得图像宽度和高度
	        		int w=bi.getWidth();
	        		int h=bi.getHeight();

					//创建新的图像变量
					BufferedImage nbi=new BufferedImage(w,h,BufferedImage.TYPE_3BYTE_BGR);
					
					
					for(int y=0;y<h;y++){
						for(int x=0;x<w;x++){
							
							int pixel=bi.getRGB(x,y);
							pixel=~pixel;
							nbi.setRGB(x,y,pixel);
						}
					}
					return nbi;		
	        }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值