图像的亮度, 指的是图像像素的强度, 黑色为最暗, 白色为最亮, 在ios中黑色用0来表示, 白色用1来表示.一个像素, 基本上是用RGB三个颜色分量来表示的. R(0-1), G(0-1),B(0-1).

  亮度调整有多种计算方法,效果并不完全相同,在颜色的表示方法中, HSL(L)表示法就是:色相(hue)、饱和度(saturation)、亮度(lightness),改变其中的L值就可以调整图象的亮度,但效果显得比较生硬。

PhotoShop和GPUImage中采用的就是另外一种方法就是把图象每个点颜色的RGB分量分别加上亮度调整值,这种效果相对比较柔和。下面是顶点着色器和片段着色器代码(这些代码运行于GPU中)。

  顶点着色

 attribute vec4 position; //输入顶点位置属性attribute vec4 inputTextureCoordinate;//输入纹理位置属性varying vec2 textureCoordinate;//输出给片段着色器的纹理位置void main(){gl_Position = position;//输出给片段着色器的顶点位置textureCoordinate = inputTextureCoordinate.xy;//告诉片段着色器,顶点着色器正在处理的像素点。}

  

  片段着色

 varying highp vec2 textureCoordinate;uniform sampler2D inputImageTexture;//输入的纹理图片。也就是我们要处理的图片uniform lowp float brightness;//亮度值,我们在程序中可以调整的。void main(){lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);//输入图片的纹理颜色gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w);//像素着色颜色。将每个像素的RGB分量与亮度值相加,得到心的像素颜色。即算法实现}

在我的美图秀秀中,使用的是上述算法,而官方版不是

使用GPUImage的GPUImageBrightnessFilter来实现图像的亮度调整。

  具体应用

1.在GPUImageBrightnessFilter中首先初始化该滤镜

GPUImageBrightnessFilter *filter = [[GPUImageBrightnessFilter alloc] init];

2.设置亮度值。该亮度值通过滑动UISlider来改变

filter.brightness = value;

3.设置亮度调整范围为整张图像

[filter forceProcessingAtSize:image.size];

4.设置输入图像纹理

GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];
[pic addTarget:filter];

5.处理图像

[pic processImage];[filter useNextFrameForImageCapture];

6.获取处理后的图像

return [filter imageFromCurrentFramebuffer];

+ (UIImage *)changeValueForBrightnessFilter:(float)value image:(UIImage *)image;
{GPUImageBrightnessFilter *filter = [[GPUImageBrightnessFilter alloc] init];filter.brightness = value;[filter forceProcessingAtSize:image.size];GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];[pic addTarget:filter];[pic processImage];[filter useNextFrameForImageCapture];return [filter imageFromCurrentFramebuffer];
}

附录

在GPUImageBrightnessFilter的init方法中,设置了默认的亮度为0

- (id)init;
{if (!(self = [super initWithFragmentShaderFromString:kGPUImageBrightnessFragmentShaderString])){return nil;}brightnessUniform = [filterProgram uniformIndex:@"brightness"];self.brightness = 0.0;return self;
}

setBrightness方法调整图像的亮度值,_brightness为输入的亮度值,在顶点着色器中uniform float brightness与brightnessUniform = [filterProgram uniformIndex:@"brightness"]对应,必须名字相同

- (void)setBrightness:(CGFloat)newValue;
{_brightness = newValue;[self setFloat:_brightness forUniform:brightnessUniform program:filterProgram];
}

下面我们预览一下效果

    

转载于:https://www.cnblogs.com/salam/p/5118704.html

美图秀秀滤镜之亮度调整相关推荐

  1. 美图秀秀滤镜之饱和度

    饱和度是指色彩的鲜艳程度,也称色彩的纯度.饱和度取决于该色中含色成分和消色成分(灰色)的比例.含色成分越大,饱和度越大:消色成分越大,饱和度越小.纯的颜色都是高度饱和的,如鲜红,鲜绿.混杂上白色,灰色 ...

  2. Android绘图机制 Demo(简单完成美图秀秀的滤镜)

    Android绘图机制 Demo(简单完成美图秀秀的滤镜) 1.xml <?xml version="1.0" encoding="utf-8"?> ...

  3. linux 下的图片处理软件下载,美图秀秀Linux版

    美图秀秀linux版是一款图片处理软件,可以帮助用户对图片进行美化处理,支持批量处理图片,能够方便用户直接在Linux系统上修改图像,有需要可以下载. 美图秀秀linux版是一款图片处理软件,可以帮助 ...

  4. 【AI研究院】360无死角认识一下女神的线上美容院-“美图秀秀”

    小 满 计算机视觉爱好者. 作者 | 小满 编辑 | 言有三 你爱自拍么? 距离2018年结束还有一个多月的时间. 19日晚小米集团带来了重磅消息,官宣与美图集团联姻,未来合作期间美图公司将旗下手机业 ...

  5. 美图秀秀 Mac版终于上线 关于美图秀秀 Mac版初体验

    美图秀秀 Mac版已经上线啦,小编很快的体验了一下,操作逻辑延续了手机端的,相对来说还是很容易上手的,如果你是一位Mac用户,现在就可以开始使用咯!新版支持 Intel 和 M1芯片Mac,话不多说直 ...

  6. linux裁剪图片的软件,【美图秀秀Linux版】美图秀秀Linux版下载 v1.0.0.0 免费最新版-趣致软件园...

    美图秀秀Linux版是一款专门针对linux系统所推出的图片处理及美化工具,用户通过这款软件可以对图片进行简单的处理,比如说:调清晰度.加水印以及一键裁剪等等,这样就能够为用户的工作生活带来极大的便利 ...

  7. html手机9张图片显示,怎么把一张图片分成9张(手机美图秀秀九宫格在哪)

    手机拍照片咋做成九宫格?只需4步,这么发朋友圈真好看! 国庆中秋双节已过,你拍了照片吗?很多朋友拍了照片后,喜欢发朋友圈分享. 今天教大家一招,让你发的朋友圈更好看,用手机就能完成.先看下例图: 下面 ...

  8. 期末大作业之Matlab美图秀秀【GUI界面】

    一.任务描述 该项目是基于MATLAB+Python+opencv的美图秀秀工具包,且实现了GUI可视化界面.工具包括图像处理基础功能,如选择保存撤销图片.摄像头拍照.特征点定位.退出等:基本编辑功能 ...

  9. 安卓机器人做图软件_绘画机器人andy app下载-美图秀秀绘画机器人v7.0安卓版_5577安卓网...

    本站为大家带来绘画机器人andy app下载资源.美图秀秀绘画机器人在哪里.美图秀秀绘画机器人怎么用?这是美图新上线的图片处理功能,一秒拥有属于自己的专属肖像画,画风穿越二次元! [美图秀秀绘画机器人 ...

最新文章

  1. 深度 | AI掘金,非富即亡
  2. javascript深入理解js闭包[转]
  3. buu [AFCTF2018]Morse
  4. 迪粉汇接入网易云信,打造比亚迪车友亲密沟通利器
  5. spring boot + vue + element-ui全栈开发入门
  6. 《你的灯亮着吗》阅读笔记(三)
  7. crossin的编程教室python入门_简单三步,用 Python 发邮件
  8. 异步(python 版)
  9. spring-boot-devtools 热部署
  10. OpenShift 4 之使用https协议访问Route
  11. 深海迷航创造模式火箭怎么飞_深海迷航被玩成养鱼游戏 奇葩玩家的养殖之路...
  12. javascript是一门多线程的语言_如何理解JavaScript是一种单线程非阻塞脚本语言?...
  13. CKA考题[k8s1.24]
  14. SpringCloud-狂神(1. 概述)学习笔记
  15. 使用golang链接达梦数据库
  16. HbuilderX 启动微信小程序 无法打开项目
  17. 视频教程-微信公众平台开发入门-微信开发
  18. 不是你不懂黑盒攻击,而是你还不懂SurFree
  19. 用PHP写了个 标签 按点击率的 字体大小和颜色的 显示效果
  20. 当Python遇到分形数学魔法 --> 树叶

热门文章

  1. 監測Android APP 佔用系統資源的情況 (純代碼獲取)
  2. win7启动后trustedinstaller.exe占用cpu过高问题
  3. Android可视化美化工具,推荐一款简约酷炫的 Android 可视化库
  4. 开题报告html5游戏,开题报告基于html5的音乐网站
  5. TextView设置最大行数、或者最多显示6个字、结束时为省略号
  6. 三代honeypot连外网
  7. keil使用详解--魔法棒后续
  8. 隐藏与显示华为等有虚拟按键手机的虚拟按键
  9. 深圳即将启动首届「全国人工智能大赛」:超过 500 万大奖 政府资助,潜信息你读懂了吗!
  10. Android中各种Span的用法——转载