首页 > 编程 > Java > 正文

java将图片至暗的实现方法

2019-11-26 12:09:48
字体:
来源:转载
供稿:网友

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

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

变成为

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

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;   } 

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

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:

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将图片至暗的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表