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

(0)

相关推荐

  • JAVA比较两张图片相似度的方法

    本文实例讲述了JAVA比较两张图片相似度的方法.分享给大家供大家参考.具体如下: 摘要: importjava.awt.image.BufferedImage; importjava.io.File; importjavax.imageio.ImageIO; /***比较两张图片的相似度*@authorGuihua**/publicclassBMPLoader{//改变成二进制码 publicstaticString[][]getPX(Stringargs){int[]rgb=newint[3]

  • Java实现图片对比功能

    之前用按键精灵写过一些游戏辅助,里面有个函数叫FindPic,就上在屏幕范围查找给定的一张图片,返回查找到的坐标位置. 现在,Java来实现这个函数类似的功能. 算法描述: 屏幕截图,得到图A,(查找的目标图片为图B): 遍历图A的像素点,根据图B的尺寸,得到图B四个角映射到图A上的四个点: 得到的四个点与图B的四个角像素点的值比较.如果四个点一样,执行步骤4:否则,回到步骤2继续: 进一步对比,将映射范围内的全部点与图B全部的点比较.如果全部一样,则说明图片已找到:否则,回到步骤2继续: 这里

  • java将图片至暗的实现方法

    之前也写过一个代码给一张图片然后把图片变暗,今天我们换一种思路,或者是是另外的一种方式将图片至暗,当然方法也是很简单的,但是对于菜鸟的我在这个地方停留了一天半的时间,将图片至暗 现在我们要将这样的一张图片 变成为 虽然说变暗之后确实没有之间亮的好看,但是不管了,反正那么漂亮的美女和我的关系我不太大,如果说硬是有关系的话,那应该是在梦中了,好了我们直接上代码 package com.epoint.wdg.test; import java.awt.Color; import java.awt.im

  • Java 实现图片压缩的两种方法

    问题背景. 典型的情景:Nemo社区中,用户上传的图片免不了要在某处给用户做展示. 如用户上传的头像,那么其他用户在浏览该用户信息的时候,就会需要回显头像信息了. 用户上传的原图可能由于清晰度较高而体积也相对较大,考虑用户流量带宽,一般而言我们都不会直接体积巨大的原图直接丢给用户让用户慢慢下载. 这时候通常我们会在服务器对图片进行压缩,然后把压缩后的图片内容回显给用户. 压缩方案: 这里主要找了两个java中常用的图片压缩工具库:Graphics和Thumbnailator. 1.Graphic

  • java 在图片上写字,两个图片合并的实现方法

    实例如下: package writeimg; import javax.imageio.ImageIO; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; public class pic

  • Java读取图片EXIF信息的方法

    本文实例讲述了Java读取图片EXIF信息的方法.分享给大家供大家参考.具体分析如下: 首先介绍一下什么是EXIF,EXIF是Exchangeable Image File的缩写,这是一种专门为数码相机照片设定的格式.这种格式可以用来记录数字照片的属性信息,例如相机的品牌及型号.相片的拍摄时间.拍摄时所设置 的光圈大小.快门速度.ISO等等信息.除此之外它还能够记录拍摄数据,以及照片格式化方式,这样就可以输出到兼容EXIF格式的外设上,例如照片打印机 等. 目前最常见的支持EXIF信息的图片格式

  • java实现图片写入高清字体及带边框的方法

    本文实例讲述了java实现图片写入高清字体及带边框的方法.分享给大家供大家参考.具体实现方法如下: Graphics2D g2=image.createGraphics(); //g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingH

  • Java 给图片和动图添加水印的方法

    这两天根据需求在做图片上传添加水印,实话说重来不知道java还可以这样操作,既然有个这要求我就去找资料研究了一番,现在把它分享一下,希望能帮到有需要的兄弟. 给普通图片添加水印和给动图添加水印是不一样的,给普通图片添加水印用的是java自带的方法写的,给动图使用了gif4j框架,这个框架在CSDN里面很多可以下载,建议下载破解版的,因为原来的jar包会有自带的一个水印是去不了的. import java.awt.*; import java.awt.image.BufferedImage; im

  • Java将图片组合成PDF文件的方法

    本文实例为大家分享了Java将图片组合成PDF文件的具体代码,供大家参考,具体内容如下 程序界面图: 代码清单: package 将图片组合成PDF文件; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileFilter; import java.io.FileOutputStream; import java.io.IOE

  • java读取图片并转化为二进制字符串的实现方法

    本例子的目的在于测试往oracle数据库中插入blob字段 public static String getImgStr(String imgFile){ //将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null; byte[] data = null; //读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(da

  • Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.分享给大家供大家参考,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(View v) { // 防止出现Immutable bitmap passed to Canvas constructor错误 Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.apple).copy(Bi

  • Java实现图片上传到服务器并把上传的图片读取出来

    在很多的网站都可以实现上传头像,可以选择自己喜欢的图片做头像,从本地上传,下次登录时可以直接显示出已经上传的头像,那么这个是如何实现的呢? 下面说一下我的实现过程(只是个人实现思路,实际网站怎么实现的不太清楚) 实现的思路: 工具:MySQL,eclipse 首先,在MySQL中创建了两个表,一个t_user表,用来存放用户名,密码等个人信息, 一个t_touxiang表,用来存放上传的图片在服务器中的存放路径,以及图片名字和用户ID, T_touxiang表中的用户ID对应了t_user中的i

随机推荐