java将图片至暗的实现方法

 更新时间:2017年06月02日 09:36:01   投稿:jingxian  
下面小编就为大家带来一篇java将图片至暗的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

变成为

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

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

相关文章

  • SpringBoot中@EnableAutoConfiguration和@Configuration的区别

    SpringBoot中@EnableAutoConfiguration和@Configuration的区别

    这篇文章主要介绍了SpringBoot中@EnableAutoConfiguration和@Configuration的区别,@SpringBootApplication相当于@EnableAutoConfiguration,@ComponentScan,@Configuration三者的集合,需要的朋友可以参考下
    2023-08-08
  • Java实现文本查重的方法详解

    Java实现文本查重的方法详解

    Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,采用隐马尔科夫模型(HMM),比其他常用的开源分词工具(如 MMseg4j)的分词准确率更高,下面我们就来使用它实现文本查重功能吧
    2024-04-04
  • Java中Klass模型与类加载的详细机制

    Java中Klass模型与类加载的详细机制

    这篇文章主要介绍了Java中Klass模型与类加载的详细机制,java语言是在jvm中运行而jvm是不认识java代码的我们使用javac编译的class文件jvm是不认识的 所以有一个类加载的动作 这个动作就是把class字节码拼装成一个klass类型,需要的朋友可以参考下
    2023-08-08
  • 图文精讲java常见分布式事务理论与解决方案

    图文精讲java常见分布式事务理论与解决方案

    对于分布式系统,最简单的理解就是一堆机器对外提供服务,相比单体服务,它可以承受更高的负载,但是分布式系统也带了一系列问题,今天带大家搞懂和分布式相关的常见理论和解决方案
    2021-11-11
  • Jasypt对SpringBoot配置文件加密

    Jasypt对SpringBoot配置文件加密

    数据库密码直接明文写在配置中,对安全来说,是一个很大的挑战。一旦密码泄漏,将会带来很大的安全隐患。尤其在一些企业对安全性要求很高,因此我们就考虑如何对密码进行加密。本文着重介绍Jasypt对SpringBoot配置文件加密。
    2021-05-05
  • java中处理socket通信过程中粘包的情况

    java中处理socket通信过程中粘包的情况

    本篇文章主要介绍了java中处理socket通信过程中粘包的情况,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 一个Java配置文件加密解密工具类分享

    一个Java配置文件加密解密工具类分享

    在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读取后进行解密
    2014-04-04
  • JavaFX桌面应用未响应问题解决方案

    JavaFX桌面应用未响应问题解决方案

    这篇文章主要介绍了JavaFX桌面应用未响应问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java 创建线程的3种方法及各自的优点

    Java 创建线程的3种方法及各自的优点

    这篇文章主要介绍了Java 创建线程的3种方法及各自的优点,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • java生成申请单序列号的实现方法

    java生成申请单序列号的实现方法

    申请单序列号一般要求根据一定的规则生成后几位连续的字符串,下面是我项目中使用的生成序列号的代码,其中用到了锁机制,有需要的朋友可以参考一下
    2014-01-01

最新评论