java将图片至暗

之前也写过一个代码给一张图片然后把图片变暗,今天我们换一种思路,或者是是另外的一种方式将图片至暗,当然方法也是很简单的,但是对于菜鸟的我在这个地方停留了一天半的时间,将图片至暗

java将图片至暗_第1张图片现在我们要将这样的一张图片变成为:java将图片至暗_第2张图片

虽然说变暗之后确实没有之间亮的好看,但是不管了,反正那么漂亮的美女和我的关系我不太大,如果说硬是有关系的话,那应该是在梦中了,好了我们直接上代码

package com.epoint.wdg.test;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ImgTest {
	public static void main(String[] args) throws IOException {
		File file=new File("C://Users/wdg/Desktop/people.png");
		//showParamterofImg(file);
		File file2=changeImgtoGray(file);
		grayPicToBW(file2);
	}
	public static void getRGB(File file) throws IOException{
		int []rgb =new int[3];
		BufferedImage img=ImageIO.read(file);
		int pixel=img.getRGB(2, 3);
	    // 下面三行代码将一个数字转换为RGB数字  
        rgb[0] = (pixel & 0xff0000) >> 16;  
        rgb[1] = (pixel & 0xff00) >> 8;  
        rgb[2] = (pixel & 0xff); 
        System.out.println(rgb[0]+"-"+rgb[1]+"-"+rgb[2]);
        
	}
	//把图片变灰色
	public static File changeImgtoGray(File file) throws IOException{
        float []rgb =new float[3];
		BufferedImage img=ImageIO.read(file);
		//现在我需要获取到没一点的rgb
		int y=img.getHeight();
		int x=img.getWidth();
	    BufferedImage grayImage = new BufferedImage(x, y, BufferedImage.TYPE_BYTE_GRAY);
		for(int i=0;i> 16;  
			     rgb[1] = (pixel & 0xff00) >> 8;  
			     rgb[2] = (pixel & 0xff); 
			    int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11);
				 Color color=new Color(gray,gray,gray);
				 img.setRGB(i, j, color.getRGB());

			}
		}
	    File newFile = new File("C://Users/wdg/Desktop/"+"/method5.jpg");  
	    ImageIO.write(img, "jpg", newFile); 
	   // grayPicToBW(newFile);
	    return newFile;
	}
}
其中最为重要的是这一部分:

                int y=img.getHeight();
		int x=img.getWidth();

		for(int i=0;i> 16;  
			     rgb[1] = (pixel & 0xff00) >> 8;  
			     rgb[2] = (pixel & 0xff); 
			    int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11);
				 Color color=new Color(gray,gray,gray);
				 img.setRGB(i, j, color.getRGB());

			}
		}
	    File newFile = new File("C://Users/wdg/Desktop/"+"/method5.jpg");  
	    ImageIO.write(img, "jpg", newFile); 
这一部分是获取到到图片的每一点的像素或者说ARGB:
int pixel=img.getRGB(i, j);

然后进一步的获取到RGB,然后我们获取到这点像素的灰度值,

   int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11);
并且创建一个颜色:

lor color=new Color(gray,gray,gray);
 img.setRGB(i, j, color.getRGB());
这样我们将图片打印出来就是我们第二张图片那样了

你可能感兴趣的:(java)