最关键的获取亮度公式:

float luminance = (red * 0.2126f + green * 0.7152f + blue * 0.0722f) / 255;

private BufferedImage adjustBrightness(BufferedImage imgsrc) {

int width = imgsrc.getWidth();

int height = imgsrc.getHeight();

int totalPixels = width * height;

int[] intValues = new int[totalPixels];

imgsrc.getRGB(0, 0, width, height, intValues, 0, width);

int pixelLuminanceLowerThanBound = 0;

int pixelLuminanceHigherThanBound = 0;

float luminanceSum = 0.f;

for (int i = 0, j = intValues.length; i < j; i++) {

int val = intValues[i];

int red = (val >> 16) & 0xFF;

int green = ((val >> 8) & 0xFF);

int blue = val & 0xFF;

float luminance = (red * 0.2126f + green * 0.7152f + blue * 0.0722f) / 255;

if (luminance < lowerBound) {

pixelLuminanceLowerThanBound++;

}

if (luminance > upperBound) {

pixelLuminanceHigherThanBound++;

}

luminanceSum += luminance;

}

float threshold = (totalPixels * pixelAdjustmentRatio);

if (!(pixelLuminanceLowerThanBound > threshold) && !(pixelLuminanceHigherThanBound > threshold)) {

return imgsrc;

}

float luminanceMean = luminanceSum / (totalPixels);

float brightnessDiff = (float) (universalBrightness) / 100 - luminanceMean;

float expandFactor = (float) (Math.pow(1. + brightnessDiff, 2.5));

RescaleOp rescaleOp = new RescaleOp(expandFactor, 35, null);

rescaleOp.filter(imgsrc, imgsrc);

// imgsrc.setRGB(0, 0, width, height, intValues, 0, width);

return imgsrc;

}

java rgb 黑色_Java实现图片亮度自动调节(RGB格式)相关推荐

  1. java 盖章透明_java实现图片上传后裁剪,把白色背景变成透明图(电子印章)

    应用场景:企业在白纸上盖上印章,然后软件实现透明的电子印章,在后续业务流程中使用! A4纸-----------------------------------------处理后----------- ...

  2. java获取图片像素点的rgb值_java获取图片每个像素点的RGB

    /** * 获取图片RGB数组 * @param filePath * @return */ public int[][] getImageGRB(String filePath) { File fi ...

  3. java thumbnails 中心点_java Thumbnails 图片处理的使用

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  4. java 雪花特效_java实现图片飘雪花的特效

    一)制作要点 1.多线程的使用 2.类java.util.Random的使用 (二)嵌入Applet的HTML页面源代码 SnowPic 注意:上面的图片中java的类名为SnowPic 注意大小写, ...

  5. java盒图_java合成图片

    package com.pbids.sanqin.util; import javax.imageio.ImageIO; import java.awt.*; import java.awt.imag ...

  6. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

  7. java照片拍摄时间_java读取图片的(尺寸、拍摄日期、标记)等EXIF信息

    主要代码如下: package com.test; import java.io.File; import java.io.IOException; import java.util.Iterator ...

  8. java thumbnails 内存_Java修改图片尺寸,总是报内存溢出怎么解决?

    项目需求:有很多尺寸很大的图片(图片大小可能几十MB,甚至上百MB),需要等比例缩小它们的尺寸,相当于生成缩略图. 例如:原图8268x6201,需要压缩成400x300. 我现在的方法:将图片整个读 ...

  9. java image 透明_Java实现图片透明效果

    Java实现图片透明效果,从演示截图可看到,上层图片与下层图片互相重叠,也就是上层图片透明了,看到了下层以的图片,具体的代码实现: public class HalfTransparentImageD ...

最新文章

  1. 迭代器、生成器、面向过程编程思想
  2. 文巾解题 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
  3. UIColor之【扩展:#FFFFFF -UIColor】
  4. JAVA的WebService规范JAX-WS
  5. Redis总结(四)Redis 的持久化
  6. 人机接口要学哪些计算机语言,智能人机接口
  7. matlab仿真环境,高低温环境模拟系统MATLAB仿真研究
  8. 从头搭建一个深度学习框架
  9. linux创建了目录复制不存在,Linux:复制并创建目标目录,如果它不存在
  10. leetcode-345-Reverse Vowels of a String
  11. h3c交换机怎么设置虚拟服务器,H3C交换机配置 | 如何实现两个网段主机与外部通信...
  12. 大数据时代能否保证足够的安全
  13. 关于Java锁机制面试官会怎么问,深刻易懂
  14. HTTP、Asp.net管道与IIS
  15. php整数型转字符串,php如何将整数转为字符串
  16. 静态链接库和动态链接库
  17. 2019年全球卫星遥感行业现状、融资及卫星遥感行业发展趋势分析:即时化、网络化、个性化、多样化(转载)
  18. 下班后10条最佳放松方法
  19. jude 使用学习-2018
  20. php图片生成加密pdf文件,php生成PDF格式文件并且加密

热门文章

  1. R语言ggplot2可视化:绘制堆叠的密度图(Stacked Area Chart)
  2. R语言switch语句语法、实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题
  3. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包在散点图的侧面添加辅助图形、并使用NULL将不需要可视化的侧面留白
  4. Error in Math.factor(x) : ‘abs’ not meaningful for factors
  5. R卡方检验(CHI-SQUARE TEST)
  6. R绘制面积图(area plot)
  7. 综述 | 语言分析技术在社会计算中的应用
  8. fiash星空动画制作_三维动画制作的详细流程
  9. windows10下mysql-8.0.21的安装和使用
  10. Linux下的简单socket编程示例