将图片进行黑白灰处理

版权声明:转载麻烦告知。 https://blog.csdn.net/qq_40064948/article/details/81737845

将图片黑白灰处理需要用到BufferedImage类,在BufferedImage类中,BufferedImage的构造方法new BufferedImage(w,h,x),x参数则是使头像黑白灰处理的重点--BufferedImage.TYPE_BYTE_BINARY

使用两个循环得到像素点,由于我的图片是圆形的png图像,绘制出来后边角都变成了黑色,在控制台输出rgb参数,发现有很多-1,当像素为透明null时,image.getRGB(i,j)则返回-1,所以我们这里需要将-1排除,否则将会把透明的地方绘制成黑色。

//传入图片路径返回一个BufferedImage类型的黑白灰图像
public static BufferedImage drawBlackHead(String imagePath){
		 BufferedImage image = null;
		 BufferedImage grayImage =null;
		 try {
            //根据传入的路径 读取到头像文件
			image = ImageIO.read(new File(imagePath));
			//头像变灰的重点:技巧在这个参数BufferedImage.TYPE_BYTE_BINARY
			grayImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY );  
			//用一个两重循环进行像素点赋值
			for(int i= 0 ; i < image.getWidth() ; i++){
				for(int j = 0 ; j < image.getHeight(); j++){
					int rgb = image.getRGB(i,j);
                    //这里判断rgb是否 == -1,因为当检测到透明图层时,返回值为-1,如果不排除的话话,BufferedImage.TYPE_BYTE_BINARY会将透明图层绘制成黑色
					if(rgb != -1){
						//将获取的像素点颜色 变为对应灰色
			    		grayImage.setRGB(i, j, rgb);
					}
			    }
			}
		} catch (IOException e) {
			System.out.println("drawBlackHead画灰头像失败");
		}
		return grayImage;
	 }

来自一个喜欢编程的小姐姐 >.<

客官~有缘再见

猜你喜欢

转载自blog.csdn.net/qq_40064948/article/details/81737845
今日推荐