java将图片至暗的实现方法

时间:2021-11-15 01:30:42

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

现在我们要将这样的一张图片

java将图片至暗的实现方法

变成为

java将图片至暗的实现方法

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

java" id="highlighter_885661">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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<x;i++){
      for(int j=0;j<y;j++){
        int pixel=img.getRGB(i, j);
      // grayImage.setRGB(startX, startY, w, h, rgbArray, offset, scansize);
         rgb[0] = (pixel & 0xff0000) >> 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;
  }

其中最为重要的是这一部分:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int y=img.getHeight();
int x=img.getWidth();
 
for(int i=0;i<x;i++){
  for(int j=0;j<y;j++){
    int pixel=img.getRGB(i, j);
     rgb[0] = (pixel & 0xff0000) >> 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:

?
1
int pixel=img.getRGB(i, j);

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

?
1
int gray=(int) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11);

并且创建一个颜色:

?
1
2
3
lor color=new Color(gray,gray,gray);
 
img.setRGB(i, j, color.getRGB());

这样我们将图片打印出来就是我们第二张图片那样了

以上这篇java将图片至暗的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。